OSDN Git Service
(root)
/
shogi-server
/
shogi-server.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Set initial values to BasicPlayer's instance variables.
[shogi-server/shogi-server.git]
/
shogi_server
/
player.rb
diff --git
a/shogi_server/player.rb
b/shogi_server/player.rb
index
f893c6f
..
3a86c96
100644
(file)
--- a/
shogi_server/player.rb
+++ b/
shogi_server/player.rb
@@
-30,7
+30,10
@@
class BasicPlayer
@win = 0
@loss = 0
@last_game_win = false
@win = 0
@loss = 0
@last_game_win = false
+ @rating_group = nil
+ @modified_at = nil
@sente = nil
@sente = nil
+ @game_name = ""
end
# Idetifier of the player in the rating system
end
# Idetifier of the player in the rating system
@@
-60,6
+63,19
@@
class BasicPlayer
# true for Sente; false for Gote
attr_accessor :sente
# true for Sente; false for Gote
attr_accessor :sente
+ # game name
+ attr_accessor :game_name
+
+ def is_human?
+ return [%r!_human$!, %r!_human@!].any? do |re|
+ re.match(@name)
+ end
+ end
+
+ def is_computer?
+ return !is_human?
+ end
+
def modified_at
@modified_at || Time.now
end
def modified_at
@modified_at || Time.now
end
@@
-112,7
+128,6
@@
class Player < BasicPlayer
@protocol = nil # CSA or x1
@eol = eol || "\m" # favorite eol code
@game = nil
@protocol = nil # CSA or x1
@eol = eol || "\m" # favorite eol code
@game = nil
- @game_name = ""
@mytime = 0 # set in start method also
@socket_buffer = []
@main_thread = Thread::current
@mytime = 0 # set in start method also
@socket_buffer = []
@main_thread = Thread::current
@@
-122,7
+137,7
@@
class Player < BasicPlayer
end
attr_accessor :socket, :status
end
attr_accessor :socket, :status
- attr_accessor :protocol, :eol, :game, :mytime
, :game_name
+ attr_accessor :protocol, :eol, :game, :mytime
attr_accessor :main_thread
attr_reader :socket_buffer
attr_accessor :main_thread
attr_reader :socket_buffer
@@
-179,6
+194,7
@@
class Player < BasicPlayer
log_debug("Terminating %s's write thread..." % [@name])
if @write_thread && @write_thread.alive?
write_safe(nil)
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.")
end
@player_logger.close if @player_logger
log_debug("done.")
@@
-245,6
+261,7
@@
class Player < BasicPlayer
def run(csa_1st_str=nil)
while ( csa_1st_str ||
str = gets_safe(@socket, (@socket_buffer.empty? ? Default_Timeout : 1)) )
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
log(:info, :in, str) if str && str.instance_of?(String)
$mutex.lock
begin
@@
-268,7
+285,11
@@
class Player < BasicPlayer
end
str.chomp! if (str.class == String) # may be strip! ?
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
case cmd.call
when :return
return
@@
-282,6
+303,7
@@
class Player < BasicPlayer
$mutex.unlock
end
end # enf of while
$mutex.unlock
end
end # enf of while
+ log_warning("%s's socket was suddenly closed" % [@name])
end # def run
end # class
end # def run
end # class