Class: Farce::Unshared::WeakValueMap
- Inherits:
-
Abstract::WeakValueMap
- Object
- Abstract::Map
- Abstract::ConcurrentMap
- Abstract::WeakValueMap
- Farce::Unshared::WeakValueMap
- Includes:
- Farce::Unshareable
- Defined in:
- lib/farce/unshared/weak_value_map.rb
Overview
A thread-safe map with weak values for use within one Ractor.
Instance Method Summary collapse
-
#initialize(initial_mapping = nil, normalize_keys: nil, compare_by_identity: false, compare_keys_by_identity: compare_by_identity, compare_values_by_identity: compare_by_identity) ⇒ WeakValueMap
constructor
A new instance of WeakValueMap.
Methods included from Farce::Unshareable
Methods inherited from Abstract::WeakValueMap
Methods inherited from Abstract::ConcurrentMap
#[], #[]=, #clear, #compact!, #compact_blank!, #compare_and_set, #compare_keys_by_identity?, #compare_values_by_identity?, #delete, #delete_if, #each, #each_key, #each_value, #fetch, #get, #getkey, #keep_if, #key?, #keys, #merge!, #reject!, #reverse_merge!, #select!, #size, #store, #store_if_absent, #swap, #transform_values!, #update, #upsert, #values, #wait_until, #wait_until_changed, #wait_until_match, #wait_until_non_nil, #wait_until_value, #wait_while, #wait_while_match, #wait_while_value
Methods included from Abstract::DuplicableMap
#compact, #compact_blank, #deep_dup, #duplicable?, #except, #flatten, #invert, #merge, #reject, #reverse_merge, #select, #slice, #stringify_keys, #symbolize_keys, #to_proc, #transform_keys, #transform_values, #with_indifferent_access
Methods inherited from Abstract::Map
#[], #[]=, #as_extended_json, #as_json, #assert_valid_keys, #assoc, #bson_type, #clear, #compare_by_identity?, #compare_keys_by_identity?, #compare_values_by_identity?, #deconstruct_keys, #delete, #dig, #each, #each_key, #each_pair, #each_value, #empty?, #fetch, #fetch_values, #getkey, #has_key?, #key, #key?, #keys, #length, #rassoc, #shareable_keys?, #shareable_values?, #size, #store, #store_if_absent, #to_a, #to_bson, #to_bson_normalized_value, #to_cbor, #to_h, #to_hash, #to_json, #to_msgpack, #to_query, #to_s, #value?, #values_at, #weak_keys?, #weak_values?
Constructor Details
#initialize(initial_mapping = nil, normalize_keys: nil, compare_by_identity: false, compare_keys_by_identity: compare_by_identity, compare_values_by_identity: compare_by_identity) ⇒ WeakValueMap
Returns a new instance of WeakValueMap.
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/farce/unshared/weak_value_map.rb', line 19 def initialize( initial_mapping = nil, normalize_keys: nil, compare_by_identity: false, compare_keys_by_identity: compare_by_identity, compare_values_by_identity: compare_by_identity ) initial_mapping = convert_entries(initial_mapping) restoring = Internal::KeyNormalizer.restoration?(normalize_keys) normalizer = Internal::KeyNormalizer.build(normalize_keys, shareable: false) populate = initial_mapping && ((normalizer && !restoring) || !initial_mapping.is_a?(Hash)) @map = Internal::UnsharedWeakValueMap.new( populate ? nil : initial_mapping, compare_by_identity:, compare_keys_by_identity:, compare_values_by_identity:, ) Internal::KeyNormalizer.install_concurrent(self, normalizer) unless restoring initial_mapping.each { |key, value| self[key] = value } if populate Internal::KeyNormalizer.install_concurrent(self, normalizer) if restoring super() end |