Class: Observer
- Inherits:
-
Object
- Object
- Observer
- Includes:
- Singleton
- Defined in:
- observer.rb
Class Method Summary (collapse)
-
+ (void) sync_rt(&block)
Synchronize round times with main thread / pause for the duration of round time before calling the block.
Instance Method Summary (collapse)
-
- (void) call_event(event, text)
Call event from code.
-
- (void) register_event(event)
Register an observer event.
-
- (Object) register_timer(time, event, text = '')
Register timer event.
-
- (Object) remove_timer(event)
Remove timer event.
- - (Object) reset_data
-
- (void) stop
Stop observer gracefully and finish events before exit.
- - (Object) stop_timers
-
- (void) terminate
Terminate the observer execution.
Class Method Details
+ (void) sync_rt(&block)
This method returns an undefined value.
Synchronize round times with main thread / pause for the duration of round time before calling the block
142 143 144 145 |
# File 'observer.rb', line 142 def self.sync_rt(&block) pause_rt block.call end |
Instance Method Details
- (void) call_event(event, text)
This method returns an undefined value.
Call event from code
41 42 43 44 45 46 47 |
# File 'observer.rb', line 41 def call_event(event, text) t = Thread.new do sleep 0.1 while @interrupted observer_event event, text end t.join end |
- (void) register_event(event)
This method returns an undefined value.
Register an observer event
84 85 86 87 88 89 90 91 92 |
# File 'observer.rb', line 84 def register_event(event) init if @terminated event.each { |k, v| if v.is_a?(Array) event[k] = Regexp.new(v.join('|')) end } @events << event end |
- (Object) register_timer(time, event, text = '')
Register timer event
53 54 55 56 57 58 59 60 61 62 |
# File 'observer.rb', line 53 def register_timer(time, event, text = '') remove_timer(event) @timers.store(event, Thread.new do sleep 0.1 while @interrupted while true observer_event event, text sleep time end end) end |
- (Object) remove_timer(event)
Remove timer event
66 67 68 69 70 71 72 |
# File 'observer.rb', line 66 def remove_timer(event) if @timers.key?(event) timer = @timers.fetch(event) timer.terminate if timer @timers.delete(event) end end |
- (Object) reset_data
120 121 122 123 124 125 126 |
# File 'observer.rb', line 120 def reset_data @events.clear @terminate = true @interrupted = false $_api_observer_started = false sync_clear end |
- (void) stop
This method returns an undefined value.
Stop observer gracefully and finish events before exit
115 116 117 118 |
# File 'observer.rb', line 115 def stop @terminate = true stop_timers end |
- (Object) stop_timers
128 129 130 131 132 |
# File 'observer.rb', line 128 def stop_timers @timers.each do |e, t| t.terminate end end |
- (void) terminate
This method returns an undefined value.
Terminate the observer execution
100 101 102 103 104 105 106 |
# File 'observer.rb', line 100 def terminate if @observer_thread @observer_thread.terminate end stop_timers reset_data end |