Author: bklaas
Date: Tue Sep 14 13:13:54 2010
New Revision: 9115

URL: http://svn.slimdevices.com/jive?rev=9115&view=rev
Log:
Bug: n/a
Description: set ifObj before calling callback in Networking.lua to avoid race 
condition where applets can't query iface for correct network test result
Do not push diagnostics window when getNetworkResult() is positive, indicating 
a non-error condition
Format diagnostics window with specific text in title bar for error
Split network errors from server errors in SlimBrowser and SlimMenus
Fix bug in ChooseMusicSourceApplet where server switch confirmation window was 
being erroneously called


Modified:
    
7.6/trunk/squeezeplay/src/squeezeplay/share/applets/ChooseMusicSource/ChooseMusicSourceApplet.lua
    
7.6/trunk/squeezeplay/src/squeezeplay/share/applets/SlimBrowser/SlimBrowserApplet.lua
    
7.6/trunk/squeezeplay/src/squeezeplay/share/applets/SlimMenus/SlimMenusApplet.lua
    
7.6/trunk/squeezeplay/src/squeezeplay_squeezeos/share/applets/Diagnostics/DiagnosticsApplet.lua
    
7.6/trunk/squeezeplay/src/squeezeplay_squeezeos/share/jive/net/Networking.lua

Modified: 
7.6/trunk/squeezeplay/src/squeezeplay/share/applets/ChooseMusicSource/ChooseMusicSourceApplet.lua
URL: 
http://svn.slimdevices.com/jive/7.6/trunk/squeezeplay/src/squeezeplay/share/applets/ChooseMusicSource/ChooseMusicSourceApplet.lua?rev=9115&r1=9114&r2=9115&view=diff
==============================================================================
--- 
7.6/trunk/squeezeplay/src/squeezeplay/share/applets/ChooseMusicSource/ChooseMusicSourceApplet.lua
 (original)
+++ 
7.6/trunk/squeezeplay/src/squeezeplay/share/applets/ChooseMusicSource/ChooseMusicSourceApplet.lua
 Tue Sep 14 13:13:54 2010
@@ -441,9 +441,9 @@
                return
        end
 
-       --Confirmation check.  Also, don't show confirmation if current player 
is not playing and there are tracks in the playlist.
+       --Confirmation check.  Also, don't show confirmation if current player 
is not playing or there are no tracks in the playlist.
        if not self.confirmOnChange or not currentPlayer:getSlimServer() or 
currentPlayer:getSlimServer() == server
-               or (currentPlayer:getPlayMode() ~= "play" and (not 
currentPlayer:getPlaylistSize() or currentPlayer:getPlaylistSize() == 0) ) then
+               or (currentPlayer:getPlayMode() ~= "play" or (not 
currentPlayer:getPlaylistSize() or currentPlayer:getPlaylistSize() == 0) ) then
                        self:connectPlayerToServer(currentPlayer, server)
        else
                self:_confirmServerSwitch(currentPlayer, server, serverForRetry)
@@ -592,6 +592,7 @@
 end
 
 function _showConnectToServer(self, player, server)
+
        if not self.connectingPopup then
                self.connectingPopup = Popup("waiting_popup")
                local window = self.connectingPopup

Modified: 
7.6/trunk/squeezeplay/src/squeezeplay/share/applets/SlimBrowser/SlimBrowserApplet.lua
URL: 
http://svn.slimdevices.com/jive/7.6/trunk/squeezeplay/src/squeezeplay/share/applets/SlimBrowser/SlimBrowserApplet.lua?rev=9115&r1=9114&r2=9115&view=diff
==============================================================================
--- 
7.6/trunk/squeezeplay/src/squeezeplay/share/applets/SlimBrowser/SlimBrowserApplet.lua
 (original)
+++ 
7.6/trunk/squeezeplay/src/squeezeplay/share/applets/SlimBrowser/SlimBrowserApplet.lua
 Tue Sep 14 13:13:54 2010
@@ -102,8 +102,9 @@
 local _player = false
 local _server = false
 
-local _networkOrServerError = false
-local _diagWindow = false
+local _networkError = false
+local _serverError  = false
+local _diagWindow   = false
 
 -- The path of enlightenment
 local _stepStack = {}
@@ -785,10 +786,10 @@
        -- debug.dump(request)
 
        -- there's an existing network or server error, so trap this request 
and push to a diags troubleshooting window
-       if _networkOrServerError then
-               log:warn('_networkOrServerError is not false, therefore push on 
an error window for diags')
+       if _networkError then
+               log:warn('_networkError is not false, therefore push on an 
error window for diags')
                local currentStep = _getCurrentStep()
-               _diagWindow = 
appletManager:callService("networkTroubleshootingMenu", _networkOrServerError)
+               _diagWindow = 
appletManager:callService("networkTroubleshootingMenu", _networkError)
                -- make sure we got a window generated to confirm we can leave 
this method
                if _diagWindow then
                        -- FIXME: this part doesn't work. Menu item on home 
menu shows "locked" spinny icon after hitting back arrow from diags window
@@ -3059,12 +3060,20 @@
 
 
 function notify_networkOrServerNotOK(self, iface)
-       _networkOrServerError = iface -- store the interface object in 
_networkOrServerError
+       log:warn("notify_networkOrServerNotOK()")
+       if iface and iface:isNetworkError() then
+               log:warn("this is a network error")
+               _networkError = iface -- store the interface object in 
_networkError
+       else
+               log:warn("this is a server error")
+               _serverError = true
+       end
 end
 
 
 function notify_networkAndServerOK(self, iface)
-       _networkOrServerError = false
+       _networkError = false
+       _serverError  = false
        if _diagWindow then
                _diagWindow:hide()
                _diagWindow = false

Modified: 
7.6/trunk/squeezeplay/src/squeezeplay/share/applets/SlimMenus/SlimMenusApplet.lua
URL: 
http://svn.slimdevices.com/jive/7.6/trunk/squeezeplay/src/squeezeplay/share/applets/SlimMenus/SlimMenusApplet.lua?rev=9115&r1=9114&r2=9115&view=diff
==============================================================================
--- 
7.6/trunk/squeezeplay/src/squeezeplay/share/applets/SlimMenus/SlimMenusApplet.lua
 (original)
+++ 
7.6/trunk/squeezeplay/src/squeezeplay/share/applets/SlimMenus/SlimMenusApplet.lua
 Tue Sep 14 13:13:54 2010
@@ -186,13 +186,20 @@
 
 function notify_networkOrServerNotOK(self, iface)
        log:warn('notify_networkOrServerNotOK')
-       self.networkOrServerError = iface
+       if iface and iface:isNetworkError() then
+               self.networkError = iface
+       else
+               self.networkError = false
+               self.serverError = true
+       end
 
 end
 
 
 function notify_networkAndServerOK(self, iface)
-       self.networkOrServerError = false
+       self.networkError = false
+       self.serverError  = false
+
        if self.diagWindow then
                self.diagWindow:hide()
                self.diagWindow = nil
@@ -711,9 +718,9 @@
                                        local currentPlayer = 
appletManager:callService("getCurrentPlayer")
 
                                        -- if we know there is a network error 
condition, push on a diags window immediately
-                                       if self.networkOrServerError then
-                                               log:warn('Network or Server 
reported as not OK')
-                                               self.diagWindow = 
appletManager:callService("networkTroubleshootingMenu", 
self.networkOrServerError)
+                                       if self.networkError then
+                                               log:warn('Network reported as 
not OK')
+                                               self.diagWindow = 
appletManager:callService("networkTroubleshootingMenu", self.networkError)
                                                -- make sure we got a window 
generated to confirm we can leave this method
                                                if self.diagWindow then
                                                        log:warn("we've pushed 
a diag window, so we're done here")

Modified: 
7.6/trunk/squeezeplay/src/squeezeplay_squeezeos/share/applets/Diagnostics/DiagnosticsApplet.lua
URL: 
http://svn.slimdevices.com/jive/7.6/trunk/squeezeplay/src/squeezeplay_squeezeos/share/applets/Diagnostics/DiagnosticsApplet.lua?rev=9115&r1=9114&r2=9115&view=diff
==============================================================================
--- 
7.6/trunk/squeezeplay/src/squeezeplay_squeezeos/share/applets/Diagnostics/DiagnosticsApplet.lua
 (original)
+++ 
7.6/trunk/squeezeplay/src/squeezeplay_squeezeos/share/applets/Diagnostics/DiagnosticsApplet.lua
 Tue Sep 14 13:13:54 2010
@@ -700,17 +700,23 @@
        end
 
         local errorCode = iface:getNetworkResult()
-       if not errorCode then
+       if type(errorCode) == 'number' and errorCode >= 0 then
+               log:warn('A positive number means there is no error. Do not 
push a diags window in this condition.')
+       elseif type(errorCode) == 'number' then
+               log:warn('Error code is listed as: ', errorCode)
+       else
                log:error('There is no network problem registered on this 
interface')
                return
        end
 
-        local window = Window("text_list", self:string("NETWORK_PROBLEM") )
+       local titleToken    = self.netResultToText[errorCode] and 
self.netResultToText[errorCode].text or "NETWORK_PROBLEM"
+       local helpTextToken = self.netResultToText[errorCode] and 
self.netResultToText[errorCode].help or "NETWORK_PROBLEM_HELP"
+
+        local window = Window("text_list", self:string(titleToken) )
        window:setButtonAction("rbutton", nil)
 
         local menu = SimpleMenu("menu")
        
-        local helpTextToken = self.netResultToText[errorCode] and 
self.netResultToText[errorCode].help or "NETWORK_PROBLEM_HELP"
        menu:setHeaderWidget( Textarea( "help_text", self:string(helpTextToken) 
) )
 
        self:_addDiagnosticsMenuItem(menu)

Modified: 
7.6/trunk/squeezeplay/src/squeezeplay_squeezeos/share/jive/net/Networking.lua
URL: 
http://svn.slimdevices.com/jive/7.6/trunk/squeezeplay/src/squeezeplay_squeezeos/share/jive/net/Networking.lua?rev=9115&r1=9114&r2=9115&view=diff
==============================================================================
--- 
7.6/trunk/squeezeplay/src/squeezeplay_squeezeos/share/jive/net/Networking.lua 
(original)
+++ 
7.6/trunk/squeezeplay/src/squeezeplay_squeezeos/share/jive/net/Networking.lua 
Tue Sep 14 13:13:54 2010
@@ -370,6 +370,13 @@
        return self.wireless
 end
 
+
+function isNetworkError(self)
+       if self.networkResult and type(self.networkResult) == 'number' and 
self.networkResult < 0 then
+               return true
+       end
+       return false
+end
 
 
 function getNetworkResult(self)
@@ -2033,15 +2040,15 @@
                        local percentage, quality = ifObj:getSignalStrength()
 
                        if (status.wpa_state ~= "COMPLETED") or (quality == 0) 
then
+                               ifObj:setNetworkResult(-5)
                                callback(false, -5)
-                               ifObj:setNetworkResult(-5)
                                return
                        end
                        callback(true, 5)
                else
                        if status.link ~= true then
+                               ifObj:setNetworkResult(-6)
                                callback(false, -6)
-                               ifObj:setNetworkResult(-6)
                                return
                        end
                        callback(true, 6)
@@ -2052,8 +2059,8 @@
                -- ------------------------------------------------------------
                -- Check for valid ip address
                if status.ip_address == nil or string.match(status.ip_address, 
"^169.254.") then
+                       ifObj:setNetworkResult(-8)
                        callback(false, -8)
-                       ifObj:setNetworkResult(-8)
                        return
                end
 
@@ -2063,8 +2070,8 @@
                -- ------------------------------------------------------------
                -- Check for valid gateway
                if status.ip_gateway == nil then
+                       ifObj:setNetworkResult(-10)
                        callback(false, -10)
-                       ifObj:setNetworkResult(-10)
                        return
                end
 
@@ -2074,8 +2081,8 @@
                -- ------------------------------------------------------------
                -- Check for valid dns sever ip
                if status.ip_dns == nil then
+                       ifObj:setNetworkResult(-12)
                        callback(false, -12)
-                       ifObj:setNetworkResult(-12)
                        return
                end
 
@@ -2085,11 +2092,11 @@
                -- ------------------------------------------------------------
                -- Stop here if not full check is needed
                if not full_check then
+                       ifObj:setNetworkResult(12)
                        callback(false, 12, tostring(status.ip_dns))
 
                        log:debug("checkNetworkHealth task done (part)")
 
-                       ifObj:setNetworkResult(12)
                        return
                end
 
@@ -2127,8 +2134,8 @@
                -- ------------------------------------------------------------
                -- Check for server
                if not server then
+                       ifObj:setNetworkResult(-23)
                        callback(false, -23)
-                       ifObj:setNetworkResult(-23)
                        return
                end
 
@@ -2147,8 +2154,8 @@
 
                -- Check for valid SN ip address
                if server_ip == nil then
+                       ifObj:setNetworkResult(-27)
                        callback(false, -27, server_name)
-                       ifObj:setNetworkResult(-27)
                        return
                end
 

_______________________________________________
Jive-checkins mailing list
Jive-checkins@lists.slimdevices.com
http://lists.slimdevices.com/mailman/listinfo/jive-checkins

Reply via email to