well... I have to check for any client, not just the one causing the callback..
so I use GetConnectedClientList :
Code:
Marcel = Marcel or {}
Marcel.NetRemote = Marcel.NetRemote or {}
Marcel.NetRemote.Interval = 60000;
Marcel.NetRemote.NetRemoteTimer = nil
function Marcel.NetRemote.clientconnect (client)
if (Marcel.NetRemote.NetRemoteTimer ~= nil) then
Marcel.NetRemote.NetRemoteTimer:Destroy();
Marcel.NetRemote.NetRemoteTimer = nil
end
gir.LogMessage ("Marcel.NetRemote","Wake Up Server",0)
ret,err =win.WakeOverLan("192.168.1.255", "00:19:DB:29:9E:AA")
end
function Marcel.NetRemote.TimerUpdate()
local cnt = 0;
for _, client in pairs(NetRemote.GetConnectedClientList()) do
if (client.Connected==true) then
gir.LogMessage ("Marcel.NetRemote","still connected "..client.Host,0)
cnt=cnt+1;
end
end
if (cnt==0) then
gir.LogMessage ("Marcel.NetRemote","Stand By Server",0)
g2g.SendEvent("G2GSTANDBY",nil,nil,"");
end
end
function Marcel.NetRemote.clientdisconnect (client)
if (Marcel.NetRemote.NetRemoteTimer ~= nil) then
Marcel.NetRemote.NetRemoteTimer:Destroy();
Marcel.NetRemote.NetRemoteTimer = nil
end
Marcel.NetRemote.NetRemoteTimer = gir.CreateTimer (nil,function (...)
return Marcel.NetRemote.TimerUpdate (unpack (arg))
end,nil,false)
Marcel.NetRemote.NetRemoteTimer:Arm (Marcel.NetRemote.Interval)
end
NetRemote.RegisterConnectCallback(function (...) Marcel.NetRemote.clientconnect(unpack(arg)) end);
NetRemote.RegisterDisconnectCallback (function (...) Marcel.NetRemote.clientdisconnect(unpack(arg)) end);
Marcel