Class: ProgressMonitor::Display::MessageLoop

Inherits:
Object
  • Object
show all
Defined in:
lib/progress_monitor/display/message_loop.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(queue, main_thread, renderer) ⇒ MessageLoop

Returns a new instance of MessageLoop.



6
7
8
9
10
# File 'lib/progress_monitor/display/message_loop.rb', line 6

def initialize(queue, main_thread, renderer)
  @queue = queue
  @main_thread = main_thread
  @renderer = renderer
end

Instance Attribute Details

#main_threadObject (readonly)

Returns the value of attribute main_thread.



4
5
6
# File 'lib/progress_monitor/display/message_loop.rb', line 4

def main_thread
  @main_thread
end

#queueObject (readonly)

Returns the value of attribute queue.



4
5
6
# File 'lib/progress_monitor/display/message_loop.rb', line 4

def queue
  @queue
end

#rendererObject (readonly)

Returns the value of attribute renderer.



4
5
6
# File 'lib/progress_monitor/display/message_loop.rb', line 4

def renderer
  @renderer
end

Instance Method Details

#performObject



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/progress_monitor/display/message_loop.rb', line 12

def perform
  loop do
    message = queue.pop
    case message[:type]
      when :update
        on_update(message[:task], message[:event], message[:details])
      when :timer
        on_timer
      when :input
        on_input message[:key]
    end
  end
rescue => error
  main_thread.raise error
end