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