Module: Spectator::Control

Included in:
Runner
Defined in:
lib/spectator/control.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#signal_queueObject (readonly)

Returns the value of attribute signal_queue.



41
42
43
# File 'lib/spectator/control.rb', line 41

def signal_queue
  @signal_queue
end

Instance Method Details

#abort!Object



11
12
13
14
# File 'lib/spectator/control.rb', line 11

def abort!
  puts '--- Forcing abort...'.white
  Kernel.abort("\n")
end

#exitObject



5
6
7
8
9
# File 'lib/spectator/control.rb', line 5

def exit
  @exiting = true
  puts '--- Exiting...'.white
  Kernel.exit
end

#trap_int!Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/spectator/control.rb', line 16

def trap_int!
  # Ctrl-C
  @interrupted ||= false
  @signal_queue = []
  @signals_handler = Thread.new do
    loop do
      sleep(0.3)
      if signal_queue.any?
        listener.pause
        ask_what_to_do!
        listener.unpause
        Thread.pass
        signal_queue.shift
      end
    end
  end

  Signal.trap('INT') do
    abort!     if exiting?
    start_exit if interrupted?
    signal_queue << :int
    puts ' (Interrupted with CTRL+C)'.red
  end
end