Class: Distem::Events::EventManager
- Inherits:
-
Object
- Object
- Distem::Events::EventManager
- Defined in:
- lib/distem/events/eventmanager.rb
Instance Attribute Summary (collapse)
-
- (Object) event_trace
readonly
Event trace.
Instance Method Summary (collapse)
-
- (EventManager) initialize(trace = nil)
constructor
A new instance of EventManager.
- - (Object) run
- - (Object) set_trace(trace)
- - (Object) stop
Constructor Details
- (EventManager) initialize(trace = nil)
Returns a new instance of EventManager
10 11 12 13 |
# File 'lib/distem/events/eventmanager.rb', line 10 def initialize(trace = nil) @event_trace = trace @running_thread = nil end |
Instance Attribute Details
- (Object) event_trace (readonly)
Event trace
8 9 10 |
# File 'lib/distem/events/eventmanager.rb', line 8 def event_trace @event_trace end |
Instance Method Details
- (Object) run
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/distem/events/eventmanager.rb', line 20 def run raise "No event trace is set" unless @event_trace raise "The event manager is already started!" if (@running_thread and @running_thread.alive?) event = nil date = 0 runblock = Proc.new { init_time = Time.now begin event.trigger(@event_trace, date) if event date, event = @event_trace.pop_next_event if date sleep_time = init_time + date - Time.now sleep sleep_time if sleep_time > 0 end end while event } @running_thread = Thread.new { runblock.call } end |
- (Object) set_trace(trace)
15 16 17 18 |
# File 'lib/distem/events/eventmanager.rb', line 15 def set_trace(trace) @running_thread.exit if @running_thread @event_trace = trace end |
- (Object) stop
47 48 49 50 51 |
# File 'lib/distem/events/eventmanager.rb', line 47 def stop @running_thread.exit if @running_thread @running_thread = nil @event_trace.clear end |