Class: RubyGo::Timeout

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby_go/timeout.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(seconds) ⇒ Timeout

Returns a new instance of Timeout.



4
5
6
7
8
# File 'lib/ruby_go/timeout.rb', line 4

def initialize(seconds)
  @mutex = Mutex.new
  @timeout = false
  @timeout_at = Time.now() + seconds
end

Instance Attribute Details

#timeout_atObject (readonly)

Returns the value of attribute timeout_at.



2
3
4
# File 'lib/ruby_go/timeout.rb', line 2

def timeout_at
  @timeout_at
end

Instance Method Details

#pop(non_block = true) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/ruby_go/timeout.rb', line 10

def pop(non_block = true)
  return true if @timeout

  @mutex.synchronize do
    diff = @timeout_at - Time.now()
    @timeout = true if diff <= 0
  end

  if @timeout
    true
  else
    raise ThreadError
  end
end