@win = 0
@loss = 0
@last_game_win = false
+ @rating_group = nil
+ @modified_at = nil
@sente = nil
@game_name = ""
end
@player_id = @password = nil
end
end
+
+ def set_sente_from_str(str)
+ case str
+ when "+": @sente = true
+ when "-": @sente = false
+ else
+ # str should be "*"
+ @sente = nil
+ end
+ end
end
log_debug("Terminating %s's write thread..." % [@name])
if @write_thread && @write_thread.alive?
write_safe(nil)
+ Thread.pass # help the write_thread to terminate
end
@player_logger.close if @player_logger
log_debug("done.")
def run(csa_1st_str=nil)
while ( csa_1st_str ||
str = gets_safe(@socket, (@socket_buffer.empty? ? Default_Timeout : 1)) )
+ time = Time.now
log(:info, :in, str) if str && str.instance_of?(String)
$mutex.lock
begin
end
str.chomp! if (str.class == String) # may be strip! ?
- cmd = ShogiServer::Command.factory(str, self)
+ delay = Time.now - time
+ if delay > 5
+ log_warning("Detected a long delay: %.2f sec" % [delay])
+ end
+ cmd = ShogiServer::Command.factory(str, self, time)
case cmd.call
when :return
return
$mutex.unlock
end
end # enf of while
+ log_warning("%s's socket was suddenly closed" % [@name])
end # def run
end # class