OSDN Git Service

Forgot to add this file at the previous commit.
[shogi-server/shogi-server.git] / shogi_server / timeout_queue.rb
index 60189d0..adeacc4 100644 (file)
@@ -34,7 +34,7 @@ module ShogiServer
 
 class TimeoutQueue
   def initialize(timeout=20)
-    @timeout = 20 # sec
+    @timeout = timeout # sec
     @queue = []
     @mon  = Monitor.new
     @cond = @mon.new_cond
@@ -48,18 +48,16 @@ class TimeoutQueue
   end
 
   #
-  # @return :timeout if timeout
+  # @return :timeout if it timed out
   #
   def deq
     timeout_flg = false
-    ret = nil
-
+    ret = :timeout
     @mon.synchronize do
       if @queue.empty?
-        if @cond.wait(15)
+        unless @cond.wait(@timeout)
           #timeout
           timeout_flg = true
-          ret = :timeout
         end
       end
       if !timeout_flg && !@queue.empty?
@@ -68,6 +66,23 @@ class TimeoutQueue
     end # synchronize
     return ret
   end
+
+  def empty?
+    ret = true
+    @mon.synchronize do
+      ret = @queue.empty?
+    end
+    return ret
+  end
+
+  def get_messages
+    ret = nil
+    @mon.synchronize do
+      ret = @queue.dup
+    end
+    return ret
+  end
+
 end
 
 end