require 'shogi_server/util'
require 'shogi_server/league/floodgate_thread.rb'
require 'pathname'
+require 'set'
require 'tempfile'
#################################################
$league.dir = $topdir
+ # Set of connected players
+ $players = Set.new
+
config = {}
config[:BindAddress] = "0.0.0.0"
config[:Port] = port
srand
server = WEBrick::GenericServer.new(config)
- ["INT", "TERM"].each do |signal|
+ ["INT", "TERM"].each do |signal|
trap(signal) do
+ $players.each {|p| p.kill}
server.shutdown
setup_floodgate.kill
end
log_message(sprintf("user %s login", player.name))
login.process
player.setup_logger($options["player-log-dir"]) if $options["player-log-dir"]
+
+ $mutex.lock
+ begin
+ $players.add(player)
+ ensure
+ $mutex.unlock
+ end
+
player.run(login.csa_1st_str) # loop
$mutex.lock
begin
player.finish
$league.delete(player)
log_message(sprintf("user %s logout", player.name))
+ $players.delete(player)
ensure
$mutex.unlock
end