class CottonTail::App

App is the main class for a CottonTail server

Attributes

env[R]

Public Class Methods

new(queue_strategy: Queue::Bunny, env: {}, connection: Bunny.new) click to toggle source
# File lib/cotton_tail/app.rb, line 8
def initialize(queue_strategy: Queue::Bunny, env: {}, connection: Bunny.new)
  @dependencies = { queue_strategy: queue_strategy, connection: connection }
  @env = env
  @connection = connection.start
end

Public Instance Methods

config() click to toggle source
# File lib/cotton_tail/app.rb, line 14
def config
  @config ||= Configuration.new(middleware: Middleware.default_stack(self))
end
queues() click to toggle source
# File lib/cotton_tail/app.rb, line 18
def queues
  routes.queues
end
routes() click to toggle source
# File lib/cotton_tail/app.rb, line 34
def routes
  @routes ||= DSL::Routes.new(**@dependencies)
end
run() click to toggle source

Start the app, process all pending messages, and then shutdown

# File lib/cotton_tail/app.rb, line 23
def run
  supervisors.map(&:run).each(&:join)
end
start() click to toggle source
# File lib/cotton_tail/app.rb, line 27
def start
  supervisors.map(&:start)
  puts 'Waiting for messages ...'

  sleep 0.01 while running?
end

Private Instance Methods

running?() click to toggle source
# File lib/cotton_tail/app.rb, line 46
def running?
  supervisors.any?(&:running?)
end
supervisors() click to toggle source
# File lib/cotton_tail/app.rb, line 40
def supervisors
  @supervisors ||= queues.map do |queue|
    Queue::Supervisor.new(queue, app: self)
  end
end