Author: titmuss
Date: Thu Jan 17 04:44:41 2008
New Revision: 1476
URL: http://svn.slimdevices.com?rev=1476&root=Jive&view=rev
Log:
Bug: N/A
Description:
Modifed the comet debug to include the server name.
In Comet:disconnect() kill any reconnection timers. If SC was stopped for a few
minutes
the SlimServer object was freed, on reconnect you would get two connections to
that SC.
Modified:
trunk/jive/src/pkg/jive/share/jive/net/Comet.lua
Modified: trunk/jive/src/pkg/jive/share/jive/net/Comet.lua
URL:
http://svn.slimdevices.com/trunk/jive/src/pkg/jive/share/jive/net/Comet.lua?rev=1476&root=Jive&r1=1475&r2=1476&view=diff
==============================================================================
--- trunk/jive/src/pkg/jive/share/jive/net/Comet.lua (original)
+++ trunk/jive/src/pkg/jive/share/jive/net/Comet.lua Thu Jan 17 04:44:41 2008
@@ -97,7 +97,7 @@
=cut
--]]
function __init(self, jnt, ip, port, path, name)
- log:debug("Comet:__init(", name, ", ", ip, ", ", port, ", ", path, ")")
+ log:debug("Comet: __init(", name, ", ", ip, ", ", port, ", ", path, ")")
-- init superclass
local obj = oo.rawnew( self, SocketHttp(jnt, ip, port, name) )
@@ -151,7 +151,6 @@
function disconnect(self)
if self.active == "connected" then
-
log:debug('Comet:disconnect()')
_active(self, "disconnect")
@@ -174,15 +173,24 @@
)
self.rhttp:fetch(req)
+ else
+ -- disable reconnections
+ self.advice.reconnect = 'none'
+
+ -- stop any existing reconnect timer
+ if self.reconnect_timer then
+ self.reconnect_timer:stop()
+ self.reconnect_timer = nil
+ end
end
end
function notify_networkConnected(self)
if self.active == "connected" then
- log:warn("Comet: Got networkConnected event, will try to
reconnect to ", self.uri)
+ log:warn(self, " Got networkConnected event, will try to
reconnect to ", self.uri)
_handleAdvice(self)
else
- log:warn("Comet: Got networkConnected event, but not currently
connected")
+ log:warn(self, " Got networkConnected event, but not currently
connected")
end
end
@@ -309,7 +317,7 @@
return function(chunk, err)
-- on error, print something...
if err then
- log:warn("Comet:_getEventSink: error: ", err)
+ log:warn(self, "_getEventSink: error: ", err)
-- try to reconnect according to advice
_handleAdvice(self)
@@ -323,60 +331,60 @@
-- update advice if any
if event.advice then
self.advice = event.advice
- log:debug("Comet:_getEventSink, advice
updated from server")
+ log:debug(self, "_getEventSink, advice
updated from server")
end
if event.channel == '/meta/connect' then
if event.successful then
- log:debug("Comet:_getEventSink,
connect message acknowledged")
+ log:debug(self, "_getEventSink,
connect message acknowledged")
_active(self, "connected")
else
- log:warn("Comet:_getEventSink,
connect failed: ", event.error)
+ log:warn(self, "_getEventSink,
connect failed: ", event.error)
_handleAdvice(self)
break
end
elseif event.channel == '/meta/disconnect' then
if event.successful then
- log:debug("Comet:_getEventSink,
disconnect OK")
+ log:debug(self, "_getEventSink,
disconnect OK")
_active(self, "closed")
else
- log:warn("Comet:_getEventSink,
disconnect failed: ", event.error)
+ log:warn(self, "_getEventSink,
disconnect failed: ", event.error)
end
elseif event.channel == '/meta/reconnect' then
if event.successful then
- log:debug("Comet:_getEventSink,
reconnect OK")
+ log:debug(self, "_getEventSink,
reconnect OK")
_active(self, "connected")
else
- log:warn("Comet:_getEventSink,
reconnect failed: ", event.error)
+ log:warn(self, "_getEventSink,
reconnect failed: ", event.error)
_handleAdvice(self)
break
end
elseif event.channel == '/meta/subscribe' then
if event.successful then
- log:debug("Comet:_getEventSink,
/meta/subscribe OK for ", event.subscription)
+ log:debug(self, "_getEventSink,
/meta/subscribe OK for ", event.subscription)
else
- log:warn("Comet:_getEventSink,
/meta/subscribe failed: ", event.error)
+ log:warn(self, "_getEventSink,
/meta/subscribe failed: ", event.error)
end
elseif event.channel == '/meta/unsubscribe' then
if event.successful then
- log:debug("Comet:_getEventSink,
/meta/unsubscribe OK for ", event.subscription)
+ log:debug(self, "_getEventSink,
/meta/unsubscribe OK for ", event.subscription)
else
- log:warn("Comet:_getEventSink,
/meta/unsubscribe error: ", event.error)
+ log:warn(self, "_getEventSink,
/meta/unsubscribe error: ", event.error)
end
elseif event.channel == '/slim/subscribe' then
if event.successful then
- log:debug("Comet:_getEventSink,
/slim/subscribe OK for reqid ", event.id)
+ log:debug(self, "_getEventSink,
/slim/subscribe OK for reqid ", event.id)
else
- log:warn("Comet:_getEventSink,
/slim/subscribe error for reqid ", event.id, ": ", event.error)
+ log:warn(self, "_getEventSink,
/slim/subscribe error for reqid ", event.id, ": ", event.error)
end
elseif event.channel == '/slim/unsubscribe' then
if event.successful then
- log:debug("Comet:_getEventSink,
/slim/unsubscribe OK for reqid ", event.id)
+ log:debug(self, "_getEventSink,
/slim/unsubscribe OK for reqid ", event.id)
else
- log:warn("Comet:_getEventSink,
/slim/unsubscribe error for reqid ", event.id, ": ", event.error)
+ log:warn(self, "_getEventSink,
/slim/unsubscribe error for reqid ", event.id, ": ", event.error)
end
elseif event.channel == '/slim/request' and
event.successful then
- log:debug("Comet:request id ",
event.id, " sent OK")
+ log:debug(self, "request id ",
event.id, " sent OK")
elseif event.channel then
local subscription = event.channel
local onetime_request = false
@@ -391,7 +399,7 @@
end
if self.notify[subscription] then
- log:debug("Comet:_getEventSink,
notifiying callbacks for ", subscription)
+ log:debug(self, "_getEventSink,
notifiying callbacks for ", subscription)
for _, func in pairs(
self.notify[subscription] ) do
log:debug(" callback
to: ", func)
@@ -405,10 +413,10 @@
else
-- this is normal, since
unsub's are delayed by a few seconds, we may receive events
-- after we unsubscribed but
before the server is notified about it
- log:debug("Comet:_getEventSink,
got data for an event we aren't subscribed to, ignoring -> ", subscription)
+ log:debug(self, "_getEventSink,
got data for an event we aren't subscribed to, ignoring -> ", subscription)
end
else
- log:warn("Comet:_getEventSink, unknown
error: ", event.error)
+ log:warn(self, "_getEventSink, unknown
error: ", event.error)
if event.advice then
_handleAdvice(self)
break
@@ -458,7 +466,7 @@
return function(chunk, err)
-- on error, print something...
if err then
- log:warn("Comet:_handshake with ", self.jsName, "
error: ", err)
+ log:warn(self, "_handshake with ", self.jsName, "
error: ", err)
-- try to reconnect according to advice
_handleAdvice(self)
@@ -471,13 +479,13 @@
self.clientId = data.clientId
self.advice = data.advice
- log:debug("Comet:_handshake OK with ",
self.jsName, ", clientId: ", self.clientId)
+ log:debug(self, "_handshake OK with ",
self.jsName, ", clientId: ", self.clientId)
-- Continue with connect phase
_connect(self)
else
- log:warn("Comet:_handshake error: ", data.error)
+ log:warn(self, "_handshake error: ", data.error)
if data.advice then
self.advice = data.advice
_handleAdvice(self)
@@ -491,7 +499,7 @@
local id = self.reqid
if log:isDebug() then
- log:debug("Comet:subscribe(", subscription, ", reqid:", id, ",
", func, ", ", playerid, ", ", table.concat(request, ","), ", priority:",
priority, ")")
+ log:debug(self, "subscribe(", subscription, ", reqid:", id, ",
", func, ", ", playerid, ", ", table.concat(request, ","), ", priority:",
priority, ")")
end
-- Remember subs to send during connect now, or if we get
@@ -533,7 +541,7 @@
end
function unsubscribe(self, subscription, func)
- log:debug("Comet:unsubscribe(", subscription, ", ", func, ")")
+ log:debug(self, "unsubscribe(", subscription, ", ", func, ")")
-- Remove from notify list
if func then
@@ -587,7 +595,7 @@
local id = self.reqid
if log:isDebug() then
- log:debug("Comet:request(", func, ", reqid:", id, ", ",
playerid, ", ", table.concat(request, ","), ", priority:", priority, ")")
+ log:debug(self, "request(", func, ", reqid:", id, ", ",
playerid, ", ", table.concat(request, ","), ", priority:", priority, ")")
end
if self.active ~= "connected" or self.batch then
@@ -657,7 +665,7 @@
return function(chunk, err)
-- on error, print something...
if err then
- log:warn("Comet:request error: ", err)
+ log:warn(self, "request error: ", err)
end
-- if we have data
if chunk then
@@ -667,12 +675,12 @@
end
if event.error then
- log:warn("Comet:request error: ",
event.error)
+ log:warn(self, "request error: ",
event.error)
elseif event.channel == '/slim/request' and
event.successful then
- log:debug("Comet:request id ", reqid, "
sent OK")
+ log:debug(self, "request id ", reqid, "
sent OK")
else
- log:warn("Comet:request unknown
response")
+ log:warn(self, "request unknown
response")
end
end
end
@@ -680,7 +688,7 @@
end
function addCallback(self, subscription, func)
- log:debug("Comet:addCallback(", subscription, ", ", func, ")")
+ log:debug(self, "addCallback(", subscription, ", ", func, ")")
if not self.notify[subscription] then
self.notify[subscription] = {}
@@ -690,7 +698,7 @@
end
function removeCallback(self, subscription, func)
- log:debug("Comet:removeCallback(", subscription, ", ", func, ")")
+ log:debug(self, "removeCallback(", subscription, ", ", func, ")")
self.notify[subscription][func] = nil
end
@@ -721,11 +729,11 @@
if advice.reconnect == 'none' then
self.clientId = nil
- log:warn("Comet:_connect, server told us not to reconnect")
+ log:warn(self, "_connect, server told us not to reconnect")
elseif advice.reconnect == 'handshake' then
log:warn(
- "Comet: advice is ", advice.reconnect, ",
re-handshaking in ",
+ self, " advice is ", advice.reconnect, ",
re-handshaking in ",
retry_interval / 1000, " seconds"
)
@@ -749,7 +757,7 @@
else -- if advice.reconnect == 'retry' then
log:warn(
- "Comet: advice is ", advice.reconnect, ", reconnecting
in ",
+ self, " advice is ", advice.reconnect, ", reconnecting
in ",
retry_interval / 1000, " seconds"
)
@@ -769,7 +777,7 @@
log:debug('Comet:_reconnect()')
if not self.clientId then
- log:debug("Comet:_reconnect error: cannot reconnect without
clientId, handshaking instead")
+ log:debug(self, "_reconnect error: cannot reconnect without
clientId, handshaking instead")
_handshake(self)
do return end
end
@@ -814,14 +822,14 @@
-- Begin a set of batched queries
function startBatch(self)
- log:debug("Comet:startBatch()")
+ log:debug(self, "startBatch()")
self.batch = true
end
-- End batch mode, send all batched queries together
function endBatch(self)
- log:debug("Comet:endBatch()")
+ log:debug(self, "endBatch()")
self.batch = false
@@ -846,6 +854,11 @@
end
end
+
+function __tostring(self)
+ return "Comet {" .. self.name .. "}: "
+end
+
--[[
=head1 LICENSE
_______________________________________________
Jive-checkins mailing list
[email protected]
http://lists.slimdevices.com/cgi-bin/mailman/listinfo/jive-checkins