def wait_next_floodgate(floodgate)
diff = floodgate.next_time - Time.now
if diff > 0
- floodgate_reload_log(leagues) if $DEBUG
sleep(diff/2)
return true
end
end
def start_games(floodgate)
- log_message("Starting Floodgate games...: %s" % [floodgate.game_name])
$league.reload
floodgate.match_game
end
- # Regenerate floodgate instances from next_array for the next matches.
- # @param next_array array of [game_name, next_time]
+ # Regenerate floodgate instances from next_instances for the next matches.
+ # @param next_instances array of [game_name, next_time]
#
- def regenerate_leagues(next_array)
- leagues = next_array.collect do |game_name, next_time|
+ def regenerate_leagues(next_instances)
+ leagues = next_instances.collect do |prev|
+ log_message("Regenerating a floodgate league...: %s %s %s %s %d %d" %
+ [prev.game_name, prev.next_time, prev.pairing_factory, prev.sacrifice, prev.max_moves, prev.least_time_per_move])
floodgate = ShogiServer::League::Floodgate.new($league,
- {:game_name => game_name,
- :next_time => next_time})
+ {:game_name => prev.game_name, :next_time => prev.next_time,
+ :pairing_factory => prev.pairing_factory, :sacrifice => prev.sacrifice,
+ :max_moves => prev.max_moves, :least_time_per_move => prev.least_time_per_move})
end
floodgate_reload_log(leagues)
return leagues
floodgate = next_league(leagues)
next if wait_next_floodgate(floodgate)
- next_array = leagues.collect do |floodgate|
- if (floodgate.next_time - Time.now) > 0
- [floodgate.game_name, floodgate.next_time]
- else
+ next_instances = leagues.collect do |floodgate|
+ unless (floodgate.next_time - Time.now) > 0
start_games(floodgate)
floodgate.charge # updates next_time
- [floodgate.game_name, floodgate.next_time]
end
+ floodgate
end
reload_shogi_server
# Regenerate floodgate instances after ShogiServer.realod
- leagues = regenerate_leagues(next_array)
+ leagues = regenerate_leagues(next_instances)
rescue Exception => ex
# ignore errors
log_error("[in Floodgate's thread] #{ex} #{ex.backtrace}")
end
end # infinite loop
-
- return @thread
end # Thread
+ return @thread
end # def start
def kill