Class: Sponges::Handler

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/sponges/handler.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(supervisor) ⇒ Handler

Returns a new instance of Handler.



8
9
10
11
12
13
14
15
16
# File 'lib/sponges/handler.rb', line 8

def initialize(supervisor)
  @supervisor = supervisor
  @queue, @notifier = IO.pipe
  at_exit do
    for_supervisor do
      Sponges.logger.info "Supervisor exits."
    end
  end
end

Instance Attribute Details

#notifierObject (readonly)

Returns the value of attribute notifier.



6
7
8
# File 'lib/sponges/handler.rb', line 6

def notifier
  @notifier
end

#queueObject (readonly)

Returns the value of attribute queue.



6
7
8
# File 'lib/sponges/handler.rb', line 6

def queue
  @queue
end

#supervisorObject (readonly)

Returns the value of attribute supervisor.



6
7
8
# File 'lib/sponges/handler.rb', line 6

def supervisor
  @supervisor
end

Instance Method Details

#callObject



22
23
24
25
26
27
28
29
30
# File 'lib/sponges/handler.rb', line 22

def call
  Thread.new do
    while signal = @queue.gets do
      if Sponges::SIGNALS.include?(signal = find_signal(signal.chomp))
        send "handler_#{signal.to_s.downcase}", signal
      end
    end
  end
end

#push(signal) ⇒ Object



18
19
20
# File 'lib/sponges/handler.rb', line 18

def push(signal)
  @notifier.puts(signal)
end