From c6100fee331aaaeda2aae3e94ef3cb7873dcf408 Mon Sep 17 00:00:00 2001 From: Jim Myhrberg Date: Mon, 31 Jan 2011 18:34:23 +0000 Subject: [PATCH] renamed Failover::Configs to Failover::Configurations --- lib/amqp/failover.rb | 6 +- .../{configs.rb => configurations.rb} | 57 +++++++++++-------- 2 files changed, 36 insertions(+), 27 deletions(-) rename lib/amqp/failover/{configs.rb => configurations.rb} (64%) diff --git a/lib/amqp/failover.rb b/lib/amqp/failover.rb index 4de6b3d..9bd0838 100644 --- a/lib/amqp/failover.rb +++ b/lib/amqp/failover.rb @@ -4,7 +4,7 @@ require 'yaml' require 'amqp/failover_client' require 'amqp/failover/config' -require 'amqp/failover/configs' +require 'amqp/failover/configurations' require 'amqp/failover/logger' require 'amqp/failover/server_discovery' require 'amqp/failover/version' @@ -20,7 +20,7 @@ module AMQP attr_accessor :fallback def initialize(confs = nil, opts = {}) - @configs = Failover::Configs.new(confs) + @configs = Failover::Configurations.new(confs) @options = default_options.merge(opts) end @@ -53,7 +53,7 @@ module AMQP end def configs - @configs ||= Config.new + @configs ||= Configurations.new end def add_config(conf = {}, ref = nil) diff --git a/lib/amqp/failover/configs.rb b/lib/amqp/failover/configurations.rb similarity index 64% rename from lib/amqp/failover/configs.rb rename to lib/amqp/failover/configurations.rb index 4858b55..8c87b1f 100644 --- a/lib/amqp/failover/configs.rb +++ b/lib/amqp/failover/configurations.rb @@ -2,42 +2,47 @@ module AMQP class Failover - class Configs < Array + class Configurations < Array def initialize(confs = nil) load(confs) end def [](*args) - return super(*args) if args[0].is_a?(Fixnum) - return get_primary if args[0] == :primary - get(args[0]) + if args[0].is_a?(Symbol) + return primary if args[0] == :primary + get(args[0]) + else + super(*args) + end end def []=(*args) - return super(*args) if args[0].is_a?(Fixnum) - return set_primary(args.last, args[0]) if args[0] == :primary - set(args.last, args[0]) + if args[0].is_a?(Symbol) + return primary = args.last if args[0] == :primary + set(args.last, args[0]) + end + super(*args) end def refs @refs ||= {} end + def primary_ref + @primary_ref ||= 0 + end + + def primary_ref=(ref) + @primary_ref = ref + end + def primary - @primary ||= 0 + get(primary_ref) || AMQP.settings end - def primary=(ref) - @primary = ref - end - - def get_primary - get(primary) || default_config - end - - def set_primary(conf = {}) - set(conf, primary) + def primary=(conf = {}) + set(conf, primary_ref) end def get(ref = nil) @@ -47,10 +52,13 @@ module AMQP def set(conf = {}, ref = nil) conf = Failover::Config.new(conf) if !conf.is_a?(Failover::Config) - self << conf if (index = self.index(conf)).nil? - if ref - refs[ref] = (index || self.index(conf)) + if (index = self.index(conf)).nil? + self << conf + else + conf = self[index] end + refs[ref] = (index || self.index(conf)) if ref + conf end def find_next(conf = {}) @@ -68,17 +76,18 @@ module AMQP end def load(conf) - if conf.is_a?(::Array) + if conf.is_a?(Array) load_array(conf) - elsif conf.is_a?(::Hash) + elsif conf.is_a?(Hash) load_hash(conf) end end def load_array(confs = []) self.clear + refs = {} confs.each do |conf| - conf = AMQP::Client.parse_amqp_url(conf) if conf.is_a?(::String) + conf = AMQP::Client.parse_amqp_url(conf) if conf.is_a?(String) load_hash(conf) end end