Class: FrugalTimeout::Request

Inherits:
Object
  • Object
show all
Includes:
Comparable
Defined in:
lib/frugal_timeout.rb

Overview

{{{1 Request

Constant Summary collapse

@@mutex =
Mutex.new

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(thread, at, klass) ⇒ Request

Returns a new instance of Request.



60
61
62
63
# File 'lib/frugal_timeout.rb', line 60

def initialize thread, at, klass
  @thread, @at, @klass = thread, at, klass
  @defused = false
end

Instance Attribute Details

#atObject (readonly)

Returns the value of attribute at.



58
59
60
# File 'lib/frugal_timeout.rb', line 58

def at
  @at
end

#klassObject (readonly)

Returns the value of attribute klass.



58
59
60
# File 'lib/frugal_timeout.rb', line 58

def klass
  @klass
end

#threadObject (readonly)

Returns the value of attribute thread.



58
59
60
# File 'lib/frugal_timeout.rb', line 58

def thread
  @thread
end

Instance Method Details

#<=>(other) ⇒ Object



65
66
67
# File 'lib/frugal_timeout.rb', line 65

def <=>(other)
  @at <=> other.at
end

#defuse!Object

Timeout won’t be enforced if you defuse a request.



70
71
72
# File 'lib/frugal_timeout.rb', line 70

def defuse!
  @@mutex.synchronize { @defused = true }
end

#defused?Boolean

Returns:

  • (Boolean)


74
75
76
# File 'lib/frugal_timeout.rb', line 74

def defused?
  @@mutex.synchronize { @defused }
end

#enforceTimeoutObject



78
79
80
81
82
# File 'lib/frugal_timeout.rb', line 78

def enforceTimeout
  @@mutex.synchronize {
  @thread.raise @klass, 'execution expired' unless @defused
  }
end