class BitBroker::Manager

This object is created for each directory

Public Class Methods

new(opts) click to toggle source
Calls superclass method
# File lib/bitbroker/manager.rb, line 39
def initialize(opts)
  super(opts)
end
start() click to toggle source
# File lib/bitbroker/manager.rb, line 13
def self.start
  BitBroker::Config['directories'].each do |entry|
    fork do
      Process.daemon
      File.open(PIDFILE, 'a') do |f|
        f.write("#{$$}\n")
      end

      begin
        manager = BitBroker::Manager.new({
          :mqconfig => BitBroker::Config['mqconfig'],
          :path => entry['path'],
          :name => entry['name'],
        })

        manager.start
        manager.advertise

        loop {}
      rescue Exception => _
        manager.stop
      end
    end
  end
end

Public Instance Methods

advertise() click to toggle source
start() click to toggle source
# File lib/bitbroker/manager.rb, line 47
def start
  # start observer that watches changing of local file-system
  @observer = do_start_observer

  # start receivers that consume message of remote nodes
  @metadata_receiver = do_start_metadata_receiver
  @p_metadata_receiver = do_start_p_metadata_receiver

  @data_receiver = do_start_data_receiver
  @p_data_receiver = do_start_p_data_receiver

  # start collector that maintains the shared directory will be same with remote ones.
  @collector = do_start_collector
end
stop() click to toggle source
# File lib/bitbroker/manager.rb, line 62
def stop
  # for observer
  @observer.raise 'stop'
  @observer.join

  # for receiver
  @metadata_receiver.raise "stop"
  @metadata_receiver.join

  @p_metadata_receiver.raise "stop"
  @p_metadata_receiver.join

  @data_receiver.raise "stop"
  @data_receiver.join

  @p_data_receiver.raise "stop"
  @p_data_receiver.join

  # for collector
  @collector.kill
end