Class: Observer

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
observer.rb

Class Method Summary (collapse)

Instance Method Summary (collapse)

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

Examples:

synchronize round times

Observer::sync_rt { echo "ready" }

Parameters:

  • block (hash)

    block reference



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

Parameters:

  • event (hash)

    callback method name

  • text (string)

    var string passed on to event method



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

Examples:

Registering an event.

Observer.instance.register_event({ :hello => "Roundtime" })

def hello
  echo "hello"
end

Parameters:

  • event (hash)

    observer event/callback method name with match text



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

Parameters:

  • event (symbol)

    observer event/callback method name

  • time (number)

    event interval in seconds

  • text (string) (defaults to: '')

    user data



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

Parameters:

  • event (symbol)

    observer event/callback method name



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

Examples:

Stopping the observer

Observer.instance.stop


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

Examples:

Terminating the observer

Observer.instance.terminate


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