class Banter::Server::SubscriberServer
Attributes
banter_worker_id[R]
hostname[R]
pid[R]
process_name[R]
workers[R]
Public Class Methods
instance()
click to toggle source
# File lib/banter/server/subscriber_server.rb, line 21 def self.instance @instance ||= new end
Public Instance Methods
set_workers(subscribers)
click to toggle source
# File lib/banter/server/subscriber_server.rb, line 25 def set_workers(subscribers) @workers = subscribers.map { |subscriber| create_queue_listeners(subscriber) } end
start()
click to toggle source
# File lib/banter/server/subscriber_server.rb, line 29 def start set_information start_workers handle_interrupts handle_teardown ensure stop_worker end
Private Instance Methods
create_queue_listeners(subscriber_class)
click to toggle source
# File lib/banter/server/subscriber_server.rb, line 84 def create_queue_listeners(subscriber_class) ClientQueueListener.new(subscriber_class) end
handle_interrupts()
click to toggle source
# File lib/banter/server/subscriber_server.rb, line 54 def handle_interrupts thread = Thread.current interrupts = ["HUP", "INT", "QUIT", "ABRT", "TERM"] interrupts.each do |signal_name| Signal.trap(signal_name) { puts "Processing #{signal_name}" thread.run } end Thread.stop end
handle_teardown()
click to toggle source
# File lib/banter/server/subscriber_server.rb, line 40 def handle_teardown ::Banter::RabbitLogger.log_service("all_services", "Starting shutdown of all services") workers.each do |worker| ::Banter::RabbitLogger.log_service("all_services", "Tearing down worker: #{worker.worker_class.name}") begin STDOUT.puts "Tearing down subscriber for #{worker.worker_class.name}" worker.shutdown rescue => e ::Banter::RabbitLogger.log_service("all_services", "#{worker.worker_class.name} - did not tear down correctly. Error - #{e.message}") end end end
set_information()
click to toggle source
# File lib/banter/server/subscriber_server.rb, line 78 def set_information @process_name = $0 @pid = Process.pid @hostname = `hostname -f`.chomp end
start_workers()
click to toggle source
# File lib/banter/server/subscriber_server.rb, line 67 def start_workers workers.each do |worker| puts "starting worker #{worker.inspect}" worker.start end end
stop_worker()
click to toggle source
# File lib/banter/server/subscriber_server.rb, line 74 def stop_worker Banter::CLI.instance.remove_pid end