Class: Delayer::DelayedProcedure
- Inherits:
-
Object
- Object
- Delayer::DelayedProcedure
- Includes:
- Comparable
- Defined in:
- lib/delayer/delayed_procedure.rb
Instance Attribute Summary collapse
-
#delayer ⇒ Object
readonly
Returns the value of attribute delayer.
-
#reserve_at ⇒ Object
readonly
Returns the value of attribute reserve_at.
-
#state ⇒ Object
readonly
Returns the value of attribute state.
Instance Method Summary collapse
- #<=>(other) ⇒ Object
-
#cancel ⇒ Object
- Cancel this job ==== Exception Delayer::TooLate
-
if already called run() ==== Return self.
-
#canceled? ⇒ Boolean
Return true if canceled this task ==== Return true if canceled this task.
-
#initialize(delayer, delay:, &proc) ⇒ DelayedProcedure
constructor
A new instance of DelayedProcedure.
- #register ⇒ Object
Constructor Details
#initialize(delayer, delay:, &proc) ⇒ DelayedProcedure
Returns a new instance of DelayedProcedure.
8 9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/delayer/delayed_procedure.rb', line 8 def initialize(delayer, delay:, &proc) @delayer = delayer @proc = proc case delay when Time @reserve_at = Process.clock_gettime(Process::CLOCK_MONOTONIC) + delay.to_f - Time.now.to_f else @reserve_at = Process.clock_gettime(Process::CLOCK_MONOTONIC) + delay.to_f end @cancel = false @procedure = nil @delayer.class.reserve(self) end |
Instance Attribute Details
#delayer ⇒ Object (readonly)
Returns the value of attribute delayer.
7 8 9 |
# File 'lib/delayer/delayed_procedure.rb', line 7 def delayer @delayer end |
#reserve_at ⇒ Object (readonly)
Returns the value of attribute reserve_at.
7 8 9 |
# File 'lib/delayer/delayed_procedure.rb', line 7 def reserve_at @reserve_at end |
#state ⇒ Object (readonly)
Returns the value of attribute state.
7 8 9 |
# File 'lib/delayer/delayed_procedure.rb', line 7 def state @state end |
Instance Method Details
#<=>(other) ⇒ Object
29 30 31 |
# File 'lib/delayer/delayed_procedure.rb', line 29 def <=>(other) @reserve_at <=> other.reserve_at end |
#cancel ⇒ Object
Cancel this job
Exception
- Delayer::TooLate
-
if already called run()
Return
self
38 39 40 41 42 |
# File 'lib/delayer/delayed_procedure.rb', line 38 def cancel @procedure&.cancel @cancel = true self end |
#canceled? ⇒ Boolean
Return true if canceled this task
Return
true if canceled this task
47 48 49 50 51 52 53 54 |
# File 'lib/delayer/delayed_procedure.rb', line 47 def canceled? procedure = @procedure if procedure procedure.canceled? else @cancel end end |
#register ⇒ Object
22 23 24 25 26 27 |
# File 'lib/delayer/delayed_procedure.rb', line 22 def register if !canceled? @procedure = Procedure.new(@delayer, &@proc) end self end |