Object
@!visibility private
WARNING: all public methods of the class must operate on the @backend directly without calling each other. This is important because of the SynchronizedMapBackend which uses a non-reentrant mutex for perfomance reasons.
# File lib/concurrent/collection/map/non_concurrent_map_backend.rb, line 15 def initialize(options = nil) @backend = {} end
# File lib/concurrent/collection/map/non_concurrent_map_backend.rb, line 19 def [](key) @backend[key] end
# File lib/concurrent/collection/map/non_concurrent_map_backend.rb, line 23 def []=(key, value) @backend[key] = value end
# File lib/concurrent/collection/map/non_concurrent_map_backend.rb, line 96 def clear @backend.clear self end
# File lib/concurrent/collection/map/non_concurrent_map_backend.rb, line 57 def compute(key) store_computed_value(key, yield(@backend[key])) end
# File lib/concurrent/collection/map/non_concurrent_map_backend.rb, line 27 def compute_if_absent(key) if NULL != (stored_value = @backend.fetch(key, NULL)) stored_value else @backend[key] = yield end end
# File lib/concurrent/collection/map/non_concurrent_map_backend.rb, line 51 def compute_if_present(key) if NULL != (stored_value = @backend.fetch(key, NULL)) store_computed_value(key, yield(stored_value)) end end
# File lib/concurrent/collection/map/non_concurrent_map_backend.rb, line 83 def delete(key) @backend.delete(key) end
# File lib/concurrent/collection/map/non_concurrent_map_backend.rb, line 87 def delete_pair(key, value) if pair?(key, value) @backend.delete(key) true else false end end
# File lib/concurrent/collection/map/non_concurrent_map_backend.rb, line 101 def each_pair dupped_backend.each_pair do |k, v| yield k, v end self end
# File lib/concurrent/collection/map/non_concurrent_map_backend.rb, line 69 def get_and_set(key, value) stored_value = @backend[key] @backend[key] = value stored_value end
# File lib/concurrent/collection/map/non_concurrent_map_backend.rb, line 112 def get_or_default(key, default_value) @backend.fetch(key, default_value) end
# File lib/concurrent/collection/map/non_concurrent_map_backend.rb, line 75 def key?(key) @backend.key?(key) end
# File lib/concurrent/collection/map/non_concurrent_map_backend.rb, line 61 def merge_pair(key, value) if NULL == (stored_value = @backend.fetch(key, NULL)) @backend[key] = value else store_computed_value(key, yield(stored_value)) end end
# File lib/concurrent/collection/map/non_concurrent_map_backend.rb, line 44 def replace_if_exists(key, new_value) if NULL != (stored_value = @backend.fetch(key, NULL)) @backend[key] = new_value stored_value end end
# File lib/concurrent/collection/map/non_concurrent_map_backend.rb, line 35 def replace_pair(key, old_value, new_value) if pair?(key, old_value) @backend[key] = new_value true else false end end
Generated with the Darkfish Rdoc Generator 2.