class Citrus::ConsoleModules::MonitorWatcher

MaterWatcher

Public Class Methods

new(args={}) click to toggle source

Initialize the module

@param [Hash] args @param [Object] console_service

# File lib/citrus/modules/monitor_watcher.rb, line 23
def initialize args={}, console_service
  @app = args[:app]
  @service = console_service
  @server_id = @app.server_id
end

Public Instance Methods

monitor_handler(agent, msg, &block) click to toggle source

Monitor handler

@param [Object] agent @param [Hash] msg

# File lib/citrus/modules/monitor_watcher.rb, line 38
def monitor_handler agent, msg, &block
  return if !msg || !msg[:action]
  case msg[:action]
  when 'add_server'
    handle_add_server agent, msg
  else
  end
end
start(&block) click to toggle source

Start the module

# File lib/citrus/modules/monitor_watcher.rb, line 30
def start &block
  subscribe_request &block
end

Private Instance Methods

add_servers(sinfos) click to toggle source

Add servers

@param [Array] sinfos

@private

# File lib/citrus/modules/monitor_watcher.rb, line 80
def add_servers sinfos
  return unless sinfos && !sinfos.empty?
  @app.add_servers sinfos
end
handle_add_server(agent, msg) click to toggle source

Handle add server

@param [Object] agent @param [Hash] msg

@private

# File lib/citrus/modules/monitor_watcher.rb, line 70
def handle_add_server agent, msg
  return if !msg || !msg[:server]
  add_servers [msg[:server]]
end
subscribe_request() { |err| ... } click to toggle source

Subscribe request

@private

# File lib/citrus/modules/monitor_watcher.rb, line 52
def subscribe_request &block
  msg = { :action => 'subscribe', :server_id => @server_id }
  @service.agent.request ConsoleModules::MasterWatcher.module_id, msg, proc{ |err, servers|
    if err
      block_given? and yield err
      return
    end
    add_servers servers
    block_given? and yield
  }
end