Class: FrugalTimeout::Request
- Inherits:
-
Object
- Object
- FrugalTimeout::Request
- Includes:
- Comparable
- Defined in:
- lib/frugal_timeout.rb
Overview
{{{1 Request Timeout request, holding expiry time, what exception to raise and in which thread. It is active by default, but can be defused. If it’s defused, then timeout won’t be enforced when #enforce is called.
Constant Summary collapse
- @@mutex =
Mutex.new
Instance Attribute Summary collapse
-
#at ⇒ Object
readonly
Returns the value of attribute at.
-
#klass ⇒ Object
readonly
Returns the value of attribute klass.
-
#thread ⇒ Object
readonly
Returns the value of attribute thread.
Instance Method Summary collapse
- #<=>(other) ⇒ Object
-
#defuse! ⇒ Object
Timeout won’t be enforced if you defuse the request.
- #defused? ⇒ Boolean
-
#enforce ⇒ Object
Enforce this timeout request, unless it’s been defused.
-
#initialize(thread, at, klass) ⇒ Request
constructor
A new instance of Request.
Constructor Details
#initialize(thread, at, klass) ⇒ Request
Returns a new instance of Request.
49 50 51 52 |
# File 'lib/frugal_timeout.rb', line 49 def initialize thread, at, klass @thread, @at, @klass = thread, at, klass @defused = false end |
Instance Attribute Details
#at ⇒ Object (readonly)
Returns the value of attribute at.
47 48 49 |
# File 'lib/frugal_timeout.rb', line 47 def at @at end |
#klass ⇒ Object (readonly)
Returns the value of attribute klass.
47 48 49 |
# File 'lib/frugal_timeout.rb', line 47 def klass @klass end |
#thread ⇒ Object (readonly)
Returns the value of attribute thread.
47 48 49 |
# File 'lib/frugal_timeout.rb', line 47 def thread @thread end |
Instance Method Details
#<=>(other) ⇒ Object
54 55 56 |
# File 'lib/frugal_timeout.rb', line 54 def <=>(other) @at <=> other.at end |
#defuse! ⇒ Object
Timeout won’t be enforced if you defuse the request.
59 60 61 |
# File 'lib/frugal_timeout.rb', line 59 def defuse! @@mutex.synchronize { @defused = true } end |
#defused? ⇒ Boolean
63 64 65 |
# File 'lib/frugal_timeout.rb', line 63 def defused? @@mutex.synchronize { @defused } end |
#enforce ⇒ Object
Enforce this timeout request, unless it’s been defused. Return true if was enforced, false otherwise.
69 70 71 72 73 74 75 76 77 |
# File 'lib/frugal_timeout.rb', line 69 def enforce @@mutex.synchronize { return false if @defused @thread.raise @klass, 'execution expired' @defused = true true } end |