+2015-01-17 Daigo Moriwaki <daigo at debian dot org>
+
+ * [shogi-server]
+ - shogi-server, shogi_server/{command,game_result,player}.rb:
+ The change at 2014-10-13 was not worked as expected. Reworked.
+ A player, attempting to login with the current live player
+ stalling for more than a day, can forcibly override the current
+ player.
+
2015-01-12 Daigo Moriwaki <daigo at debian dot org>
* [shogi-server]
# can override the current player.
if (current_player.password == player.password &&
(current_player.status != "game" ||
- Time.now - current_player.modifiled_at > ONE_DAY))
- log_message("user %s login forcely (previously modified at %s)" % [player.name, player.modified_at])
+ Time.now - current_player.last_command_at > ONE_DAY))
+ log_message("player %s login forcibly, nudging the former player" % [player.name])
+ log_message(" the former player was in %s and received the last command at %s" % [current_player.status, current_player.last_command_at])
current_player.kill
else
login.incorrect_duplicated_player(str)
end
cmd.time = time
+ player.last_command_at = time
return cmd
end
elsif !p1.sente && p2.sente
@black, @white = p2, p1
else
- raise "Never reached!"
+ raise "Never reached!: %s p1: %s p2: %s" % [game.game_id, p1.sente, p2.sente]
end
@players.each do |player|
player.status = "connected"
@main_thread = Thread::current
@write_queue = ShogiServer::TimeoutQueue.new(WRITE_THREAD_WATCH_INTERVAL)
@player_logger = nil
+ @last_command_at = Time.now
start_write_thread
end
attr_accessor :protocol, :eol, :game, :mytime
attr_accessor :main_thread
attr_reader :socket_buffer
+ # It is updated whenever a player sends a new command
+ attr_accessor :last_command_at
def setup_logger(dir)
log_file = File.join(dir, "%s.log" % [simple_player_id])
class MockPlayer < ShogiServer::BasicPlayer
attr_accessor :status
+ attr_accessor :last_command_at
end
class TestHistory < Test::Unit::TestCase
attr_accessor :game_name
attr_reader :socket_buffer
attr_reader :rate
+ attr_accessor :last_command_at
def initialize
@name = "mock_player"