Sha256: d8d139392e2bc977a281bc6cc31da9cc359d224e4568f53c04ae5b03fe6e852b
Contents?: true
Size: 1.84 KB
Versions: 1
Compression:
Stored size: 1.84 KB
Contents
module EzConfig class ConfigResolver def initialize(client) @lock = Concurrent::ReadWriteLock.new @local_store = {} @namespace = client.namespace @config_loader = EzConfig::ConfigLoader.new(client.logger) @logger = client.logger make_local end def to_s str = "" @lock.with_read_lock do @local_store.each do |k, v| value = v[:value] str << "|#{k}| |#{value_of(value)}|\n" end end str end def get(property) config = @lock.with_read_lock do @local_store[property] end config ? value_of(config[:value]) : nil end def set(delta, do_update: true) @config_loader.set(delta) update if do_update end def update make_local end private def value_of(config_value) case config_value.type when :string config_value.string when :int config_value.int when :double config_value.double when :bool config_value.bool when :feature_flag config_value.feature_flag end end def make_local store = {} @config_loader.calc_config.each do |prop, value| property = prop namespace = "" split = prop.split(":") if split.size > 1 property = split[1..-1].join namespace = split[0] end if (namespace == "") || namespace.start_with?(@namespace) existing = store[property] if existing.nil? store[property] = { namespace: namespace, value: value } elsif existing[:namespace].split(".").size < namespace.split(".").size store[property] = { namespace: namespace, value: value } end end end @lock.with_write_lock do @local_store = store end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
prefab-cloud-ruby-0.0.9 | lib/prefab/config_resolver.rb |