require 'shogi_server/config'
require 'shogi_server/util'
require 'shogi_server/league/floodgate_thread.rb'
+require 'pathname'
require 'tempfile'
#################################################
Least time in second per move: 0, 1 (default 1).
- 0: The new rule that CSA introduced in November 2014.
- 1: The old rule before it.
+ --max-identifier n
+ maximum length of an identifier
--max-moves n
when a game with the n-th move played does not end, make the game a draw.
Default 256. 0 disables this feature.
floodgate-0-240.conf.sample or shogi_server/league/floodgate.rb
for format details.
+GRACEFUL SHUTDOWN
+
+ A file named "STOP" in the base directory prevents the server from
+ starting new games including Floodgate matches.
+ When you want to stop the server gracefully, first, create a STOP file
+
+ $ touch STOP
+
+ then wait for a while until all the running games complete.
+ Now you can stop the process with no game interruptted by the 'kill'
+ command.
+
+ Note that when a server gets started, a STOP file, if any, will be
+ deleted automatically.
+
FLOODGATE SCHEDULE CONFIGURATIONS
You need to set starting times of floodgate groups in
["--daemon", GetoptLong::REQUIRED_ARGUMENT],
["--floodgate-games", GetoptLong::REQUIRED_ARGUMENT],
["--least-time-per-move", GetoptLong::REQUIRED_ARGUMENT],
+ ["--max-identifier", GetoptLong::REQUIRED_ARGUMENT],
["--max-moves", GetoptLong::REQUIRED_ARGUMENT],
["--pid-file", GetoptLong::REQUIRED_ARGUMENT],
["--player-log-dir", GetoptLong::REQUIRED_ARGUMENT])
if $options["pid-file"]
$options["pid-file"] = File.expand_path($options["pid-file"], $topdir)
+ path = Pathname.new($options["pid-file"])
+ path.dirname().mkpath()
unless ShogiServer::is_writable_file? $options["pid-file"]
usage
$stderr.puts "Can not create the pid file: %s" % [$options["pid-file"]]
$options["max-moves"] ||= ShogiServer::Default_Max_Moves
$options["max-moves"] = $options["max-moves"].to_i
+ $options["max-identifier"] ||= ShogiServer::Default_Max_Identifier_Length
+ $options["max-identifier"] = $options["max-identifier"].to_i
+
$options["least-time-per-move"] ||= ShogiServer::Default_Least_Time_Per_Move
$options["least-time-per-move"] = $options["least-time-per-move"].to_i
end
$stderr.puts("server started as a deamon [Revision: #{ShogiServer::Revision}]") if $options["daemon"]
log_message("server started [Revision: #{ShogiServer::Revision}]")
+ if ShogiServer::STOP_FILE.exist?
+ log_message("Deleted the STOP file")
+ ShogiServer::STOP_FILE.delete
+ end
+
server.start do |client|
begin
# client.sync = true # this is already set in WEBrick