def initialize(*args)
opts = args.last.is_a?(Hash) ? args.pop : {}
nodes = args.flatten
if nodes.empty? and ENV.has_key?('MONGODB_URI')
parser = URIParser.new ENV['MONGODB_URI']
opts = parser.connection_options.merge! opts
nodes = parser.node_strings
end
unless nodes.length > 0
raise MongoArgumentError, "A MongoShardedClient requires at least one seed node."
end
@seeds = nodes.map do |host_port|
host, port = host_port.split(":")
[ host, port.to_i ]
end
@seeds.freeze
@last_refresh = Time.now
@refresh_version = 0
@manager = nil
@id_lock = Mutex.new
@pool_mutex = Mutex.new
@connected = false
@safe_mutex_lock = Mutex.new
@safe_mutexes = Hash.new {|hash, key| hash[key] = Mutex.new}
@connect_mutex = Mutex.new
@refresh_mutex = Mutex.new
@mongos = true
check_opts(opts)
setup(opts)
end