class Falcon::Services

def add(service)

def add(service)
	@named[service.name] = service
end

def each(&block)

def each(&block)
	@named.each_value(&block)
end

def initialize(configuration)

def initialize(configuration)
	@named = {}
	
	configuration.each(:service) do |environment|
		service = Service::Generic.wrap(environment)
		
		add(service)
	end
end

def setup(container)

def setup(container)
	@named.each do |name, service|
		Async.logger.debug(self) {"Setup #{name} into #{container}..."}
		service.setup(container)
	end
	
	return container
end

def start

def start
	@named.each do |name, service|
		Async.logger.debug(self) {"Starting #{name}..."}
		service.start
	end
end

def stop

def stop
	failed = false
	
	@named.each do |name, service|
		Async.logger.debug(self) {"Stopping #{name}..."}
		
		begin
			service.stop
		rescue
			failed = true
			Async.logger.error(self, $!)
		end
	end
	
	return failed
end