Class: Dynflow::Clock
- Inherits:
-
Actor
- Object
- Concurrent::Actor::Context
- Actor
- Dynflow::Clock
show all
- Includes:
- Algebrick::Types
- Defined in:
- lib/dynflow/clock.rb
Defined Under Namespace
Modules: Timer
Instance Method Summary
collapse
Methods inherited from Actor
#behaviour_definition, #finish_termination, #start_termination, #terminating?
#on_message
#log
Constructor Details
#initialize(logger = nil) ⇒ Clock
Returns a new instance of Clock.
43
44
45
46
|
# File 'lib/dynflow/clock.rb', line 43
def initialize(logger = nil)
@logger = logger
@timers = Utils::PriorityQueue.new { |a, b| b <=> a }
end
|
Instance Method Details
#add_timer(timer) ⇒ Object
61
62
63
64
65
66
67
68
|
# File 'lib/dynflow/clock.rb', line 61
def add_timer(timer)
@timers.push timer
if @timers.size == 1
sleep_to timer
else
wakeup if timer == first_timer
end
end
|
#default_reference_class ⇒ Object
48
49
50
|
# File 'lib/dynflow/clock.rb', line 48
def default_reference_class
ClockReference
end
|
#on_event(event) ⇒ Object
52
53
54
|
# File 'lib/dynflow/clock.rb', line 52
def on_event(event)
wakeup if event == :terminated
end
|
#tick ⇒ Object
56
57
58
59
|
# File 'lib/dynflow/clock.rb', line 56
def tick
run_ready_timers
sleep_to first_timer
end
|