class Truth::Daemon

Public Class Methods

run(config = Config.new) click to toggle source
# File lib/truth/daemon.rb, line 3
def self.run(config = Config.new)
  client = Client.new(config)
  p "starting truth-client daemon with configs path #{config.config_folder}"
  EM.run do
    subscriber = config.redis_client
    redis = EM::Hiredis::Client.connect

    subscriber.subscribe('server.')
    msg_pattern = "truth-req.#{config.hostname}.*"
    all_msg_pattern = "truth-req.all.*"
    subscriber.psubscribe(msg_pattern)
    subscriber.psubscribe(all_msg_pattern)
    puts "subscribing to patterns #{msg_pattern} and #{all_msg_pattern}"

    subscriber.on(:message) do |channel, message|
      p [:message, channel, message]
    end

    subscriber.on(:pmessage) do |key, channel, message|
      p [:pmessage, key, channel, message]
      res = client.execute_command(channel, message)
      redis.publish "truth-res.#{config.hostname}.response", YAML.dump(res)
    end
  end
end