diff --git a/xtrn/dicewarz2/service.js b/xtrn/dicewarz2/service.js index 6f2e992dfefdeb2c2b545923c4242974919eb2b6..b0feaf34d8829e4f1eeb65b9fa724b4a72931414 100644 --- a/xtrn/dicewarz2/service.js +++ b/xtrn/dicewarz2/service.js @@ -9,6 +9,7 @@ var serverAddr=server_file.iniGetValue(null,"host"); var serverPort=server_file.iniGetValue(null,"port"); server_file.close(); +load("backgroundlog.js"); load("json-client.js"); load("event-timer.js"); load("funclib.js"); @@ -133,7 +134,7 @@ function updateStatus(gameNumber) { return false; if(game.status == status.PLAYING) { - //log(LOG_WARNING,"updating turn info for game: " + game.gameNumber); + log(LOG_DEBUG,"updating turn info for game: " + game.gameNumber); updateTurn(game); } else if(game.status == status.NEW) { @@ -165,7 +166,7 @@ function updateTurn(game) { if(game.players[game.turn].AI) { /* if we have already launched the background thread, abort */ if(aiTakingTurns[game.gameNumber]) { - //log(LOG_WARNING,"ai already loaded.. ignoring turn update"); + log(LOG_DEBUG,"ai already loaded.. ignoring turn update"); return; } /* disable this function until it is a human player's turn @@ -183,7 +184,7 @@ function updateTurn(game) { /* delete a game */ function deleteGame(gameNumber) { - log(LOG_WARNING,"removing game #" + gameNumber); + log(LOG_DEBUG,"removing game #" + gameNumber); client.remove(game_id,"games." + gameNumber,2); client.remove(game_id,"maps." + gameNumber,2); client.remove(game_id,"metadata." + gameNumber,2); @@ -198,7 +199,7 @@ function loadGame(gameNumber) { /* delete a player */ function deletePlayer(gameNumber,playerName) { - log(LOG_WARNING,"removing player from game " + gameNumber); + log(LOG_DEBUG,"removing player from game " + gameNumber); client.remove(game_id,"games." + gameNumber + ".players." + playerName,2) delete data.games[gameNumber].players[playerName]; } @@ -208,28 +209,35 @@ function scanInactivity() { var timeout = settings.inactivity_timeout * 24 * 60 * 60 * 1000; for(var g in data.games) { var game = data.games[g]; - elog("game " + game.gameNumber + " last turn: " + game.last_turn + " inactive: " + (Date.now() - game.last_turn)); - if(Date.now() - game.last_turn >= timeout) { - var player = game.players[game.turn]; - if(game.single_player) { - scoreForfeit(player); - deleteGame(game.gameNumber); - elog("inactive game deleted"); - } - else if(game.status == status.PLAYING) { - player.name += " AI"; - player.AI = { - sort:"random", - check:"random", - qty:"single", - turns:0, - moves:0 + try { + log(LOG_DEBUG,"game " + game.gameNumber + " last turn: " + game.last_turn + " inactive: " + (Date.now() - game.last_turn)); + if(Date.now() - game.last_turn >= timeout) { + var player = game.players[game.turn]; + if(game.single_player) { + scoreForfeit(player); + deleteGame(game.gameNumber); + log(LOG_DEBUG,"inactive game deleted"); + } + else if(game.status == status.PLAYING) { + player.name += " AI"; + player.AI = { + sort:"random", + check:"random", + qty:"single", + turns:0, + moves:0 + } + client.write(game_id,"games." + game.gameNumber + ".players." + game.turn,player,2) + updateTurn(game); + log(LOG_DEBUG,"inactive player changed to AI"); } - client.write(game_id,"games." + game.gameNumber + ".players." + game.turn,player,2) - updateTurn(game); - elog("inactive player changed to AI"); } } + catch(e) { + log(LOG_ERROR,"error scanning game for inactivity: " + g); + deleteGame(g); + } + } } @@ -250,14 +258,6 @@ function scoreForfeit(player) { client.unlock(game_id,"scores." + player.name); } -/* error log / debug log */ -function elog(str) { - var ef = new File(root + "e.log"); - ef.open('a',true); - ef.writeln(str + " (" + system.timestr() + ")"); - ef.close(); -} - /* initialize service */ function open() { js.branch_limit=0; @@ -281,12 +281,12 @@ function open() { function close() { client.unsubscribe(game_id,"games"); client.unsubscribe(game_id,"players"); - log("terminating dicewarz2 background service"); + log(LOG_INFO,"terminating dicewarz2 background service"); } /* main loop */ function main() { - while(client.socket.is_connected && !js.terminated && !parent_queue.poll()) { + while(!js.terminated && !parent_queue.poll()) { if(client.socket.poll(.5)) client.cycle(); timer.cycle(); @@ -300,5 +300,5 @@ main(); close(); } catch(e) { - elog(e.toSource()); -} + log(LOG_ERROR,e.toSource()); +} \ No newline at end of file