Class: Flatware::Sink::Signal

Inherits:
Object
  • Object
show all
Defined in:
lib/flatware/sink/signal.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(&on_interrupt) ⇒ Signal

Returns a new instance of Signal.



4
5
6
7
8
# File 'lib/flatware/sink/signal.rb', line 4

def initialize(&on_interrupt)
  Thread.main[:signals] = Queue.new

  @on_interrupt = on_interrupt
end

Class Method Details

.listen(&block) ⇒ Object



23
24
25
# File 'lib/flatware/sink/signal.rb', line 23

def self.listen(&block)
  new(&block).listen
end

Instance Method Details

#interruped?Boolean

Returns:

  • (Boolean)


10
11
12
# File 'lib/flatware/sink/signal.rb', line 10

def interruped?
  !signals.empty?
end

#listenObject



14
15
16
17
18
19
20
21
# File 'lib/flatware/sink/signal.rb', line 14

def listen
  Thread.new(&method(:handle_signals))

  ::Signal.trap('INT') { signals << :int }
  ::Signal.trap('CLD') { signals << :cld }

  self
end