Class: Tochtli::ControllerManager

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/tochtli/controller_manager.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeControllerManager

Returns a new instance of ControllerManager.



9
10
11
# File 'lib/tochtli/controller_manager.rb', line 9

def initialize
  @controller_classes = Set.new
end

Instance Attribute Details

#cacheObject (readonly)

Returns the value of attribute cache.



7
8
9
# File 'lib/tochtli/controller_manager.rb', line 7

def cache
  @cache
end

#loggerObject (readonly)

Returns the value of attribute logger.



7
8
9
# File 'lib/tochtli/controller_manager.rb', line 7

def logger
  @logger
end

#rabbit_connectionObject (readonly)

Returns the value of attribute rabbit_connection.



7
8
9
# File 'lib/tochtli/controller_manager.rb', line 7

def rabbit_connection
  @rabbit_connection
end

Class Method Details

.method_missing(method, *args) ⇒ Object



90
91
92
93
94
95
96
# File 'lib/tochtli/controller_manager.rb', line 90

def method_missing(method, *args)
 if instance.respond_to?(method)
    instance.send(method, *args)
  else
    super
  end
end

Instance Method Details

#register(controller_class) ⇒ Object

Raises:

  • (ArgumentError)


13
14
15
16
# File 'lib/tochtli/controller_manager.rb', line 13

def register(controller_class)
  raise ArgumentError, "Controller expected, got: #{controller_class}" unless controller_class.is_a?(Class) && controller_class < Tochtli::BaseController
  @controller_classes << controller_class
end

#restart(options = {}) ⇒ Object



61
62
63
64
65
66
67
68
# File 'lib/tochtli/controller_manager.rb', line 61

def restart(options={})
 options[:rabbit_connection] ||= @rabbit_connection
 options[:logger]            ||= @logger
 options[:cache]             ||= @cache

 setup options
 restart_active_controllers
end

#running?Boolean

Returns:

  • (Boolean)


74
75
76
# File 'lib/tochtli/controller_manager.rb', line 74

def running?
  @rabbit_connection && @rabbit_connection.open?
end

#set_up?Boolean

Returns:

  • (Boolean)


70
71
72
# File 'lib/tochtli/controller_manager.rb', line 70

def set_up?
 !@rabbit_connection.nil?
end

#setup(options = {}) ⇒ Object



18
19
20
21
22
23
24
25
26
# File 'lib/tochtli/controller_manager.rb', line 18

def setup(options={})
  @logger            = options.fetch(:logger, Tochtli.logger)
  @cache             = options.fetch(:cache, Tochtli.cache)
  @rabbit_connection = options[:connection]

  unless @rabbit_connection
    @rabbit_connection = RabbitConnection.open(options[:config])
  end
end

#start(*controllers) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/tochtli/controller_manager.rb', line 28

def start(*controllers)
 options       = controllers.extract_options!
 setup_options = options.except!(:logger, :cache, :connection)
 queue_name    = options.delete(:queue_name)
 routing_keys  = options.delete(:routing_keys)
 initial_env   = options.delete(:env) || {}

 setup(setup_options) unless set_up?

  if controllers.empty? || controllers.include?(:all)
    controllers = @controller_classes
  end

  controllers.each do |controller_class|
    raise ArgumentError, "Controller expected, got: #{controller_class.inspect}" unless controller_class.is_a?(Class) && controller_class < Tochtli::BaseController
    unless controller_class.started?(queue_name)
      @logger.info "Starting #{controller_class}..." if @logger
      controller_class.setup(@rabbit_connection, @cache, @logger) unless controller_class.set_up?
      controller_class.start queue_name, routing_keys, initial_env
    end
  end
end

#stopObject



51
52
53
54
55
56
57
58
59
# File 'lib/tochtli/controller_manager.rb', line 51

def stop
  @controller_classes.each do |controller_class|
    if controller_class.started?
      @logger.info "Stopping #{controller_class}..." if @logger
      controller_class.stop
    end
  end
  @rabbit_connection = nil
end