$topdir = nil
$league = nil
$logger = nil
+$config = nil
$:.unshift File.dirname(__FILE__)
require 'shogi_server'
+require 'shogi_server/config'
require 'tempfile'
#################################################
# Return true if the file is writable, otherwise false.
#
def is_writable_file?(file)
+ if File.exist?(file)
+ if FileTest.file?(file)
+ return FileTest.writable_real?(file)
+ else
+ return false
+ end
+ end
+
begin
open(file, "w") {|fh| }
+ FileUtils.rm file
rescue
return false
end
- unless FileTest.file? file
- return false
- end
return true
end
player = login = nil
while r = select([client], nil, nil, ShogiServer::Login_Time) do
- break unless str = r[0].first.gets
+ str = nil
+ begin
+ break unless str = r[0].first.gets
+ rescue Exception => ex
+ # It is posssible that the socket causes an error (ex. Errno::ECONNRESET)
+ log_error("login_loop: #{ex.class}: #{ex.message}\n\t#{ex.backtrace[0]}")
+ break
+ end
$mutex.lock # guards $league
begin
str =~ /([\r\n]*)$/
end
def setup_logger(log_file)
- logger = Logger.new(log_file, 'daily')
+ logger = ShogiServer::Logger.new(log_file, 'daily')
logger.formatter = ShogiServer::Formatter.new
logger.level = $DEBUG ? Logger::DEBUG : Logger::INFO
logger.datetime_format = "%Y-%m-%d %H:%M:%S"
$options = parse_command_line
check_command_line
+ $config = ShogiServer::Config.new $options
$league = ShogiServer::League.new($topdir)