Class: SplitIoClient::Cache::Adapters::MemoryAdapters::MapAdapter
- Inherits:
-
Object
- Object
- SplitIoClient::Cache::Adapters::MemoryAdapters::MapAdapter
- Defined in:
- lib/cache/adapters/memory_adapters/map_adapter.rb
Overview
Memory adapter implementation, which stores everything inside thread-safe Map
Instance Method Summary collapse
- #add_to_map(key, field, value) ⇒ Object
- #add_to_set(key, values) ⇒ Object
- #bool(key) ⇒ Object
- #delete(key) ⇒ Object
- #delete_from_map(key, fields) ⇒ Object (also: #delete_from_set)
-
#exists?(key) ⇒ Boolean
General.
- #find_in_map(key, field) ⇒ Object
- #find_strings_by_prefix(prefix) ⇒ Object (also: #find_sets_by_prefix)
- #get_all_from_set(key) ⇒ Object
- #get_map(key) ⇒ Object
- #in_map?(key, field) ⇒ Boolean (also: #in_set?)
-
#initialize(_ = nil) ⇒ MapAdapter
constructor
A new instance of MapAdapter.
-
#initialize_map(key) ⇒ Object
(also: #initialize_set)
Map.
- #map_keys(key) ⇒ Object (also: #get_set)
- #multiple_strings(keys) ⇒ Object
-
#pipelined(&block) ⇒ Object
This method is used in Redis adapter “stubbing” it here to keep the interface.
-
#set_bool(key, val) ⇒ Object
Bool.
- #set_string(key, str) ⇒ Object
-
#string(key) ⇒ Object
String.
- #union_sets(set_keys) ⇒ Object
Constructor Details
#initialize(_ = nil) ⇒ MapAdapter
Returns a new instance of MapAdapter.
9 10 11 |
# File 'lib/cache/adapters/memory_adapters/map_adapter.rb', line 9 def initialize(_ = nil) @map = Concurrent::Map.new end |
Instance Method Details
#add_to_map(key, field, value) ⇒ Object
18 19 20 21 22 |
# File 'lib/cache/adapters/memory_adapters/map_adapter.rb', line 18 def add_to_map(key, field, value) initialize_map(key) unless @map[key] @map[key].put(field, value) end |
#add_to_set(key, values) ⇒ Object
87 88 89 90 91 92 93 |
# File 'lib/cache/adapters/memory_adapters/map_adapter.rb', line 87 def add_to_set(key, values) if values.is_a? Array values.each { |value| add_to_map(key, value, 1) } else add_to_map(key, values, 1) end end |
#bool(key) ⇒ Object
76 77 78 |
# File 'lib/cache/adapters/memory_adapters/map_adapter.rb', line 76 def bool(key) @map[key] end |
#delete(key) ⇒ Object
112 113 114 115 116 117 118 |
# File 'lib/cache/adapters/memory_adapters/map_adapter.rb', line 112 def delete(key) if key.is_a? Array key.each { |k| @map.delete(k) } else @map.delete(key) end end |
#delete_from_map(key, fields) ⇒ Object Also known as: delete_from_set
30 31 32 33 34 35 36 |
# File 'lib/cache/adapters/memory_adapters/map_adapter.rb', line 30 def delete_from_map(key, fields) if fields.is_a? Array fields.each { |field| @map[key].delete(field) } else @map[key].delete(fields) end end |
#exists?(key) ⇒ Boolean
General
108 109 110 |
# File 'lib/cache/adapters/memory_adapters/map_adapter.rb', line 108 def exists?(key) !@map[key].nil? end |
#find_in_map(key, field) ⇒ Object
24 25 26 27 28 |
# File 'lib/cache/adapters/memory_adapters/map_adapter.rb', line 24 def find_in_map(key, field) return nil if @map[key].nil? @map[key].get(field) end |
#find_strings_by_prefix(prefix) ⇒ Object Also known as: find_sets_by_prefix
61 62 63 |
# File 'lib/cache/adapters/memory_adapters/map_adapter.rb', line 61 def find_strings_by_prefix(prefix) @map.keys.select { |str| str.start_with? prefix } end |
#get_all_from_set(key) ⇒ Object
95 96 97 |
# File 'lib/cache/adapters/memory_adapters/map_adapter.rb', line 95 def get_all_from_set(key) @map[key].keys end |
#get_map(key) ⇒ Object
48 49 50 |
# File 'lib/cache/adapters/memory_adapters/map_adapter.rb', line 48 def get_map(key) @map[key] end |
#in_map?(key, field) ⇒ Boolean Also known as: in_set?
38 39 40 41 42 |
# File 'lib/cache/adapters/memory_adapters/map_adapter.rb', line 38 def in_map?(key, field) return false if @map[key].nil? @map[key].key?(field) end |
#initialize_map(key) ⇒ Object Also known as: initialize_set
Map
14 15 16 |
# File 'lib/cache/adapters/memory_adapters/map_adapter.rb', line 14 def initialize_map(key) @map[key] = Concurrent::Map.new end |
#map_keys(key) ⇒ Object Also known as: get_set
44 45 46 |
# File 'lib/cache/adapters/memory_adapters/map_adapter.rb', line 44 def map_keys(key) @map[key].keys end |
#multiple_strings(keys) ⇒ Object
65 66 67 68 69 |
# File 'lib/cache/adapters/memory_adapters/map_adapter.rb', line 65 def multiple_strings(keys) keys.each_with_object({}) do |key, memo| memo[key] = string(key) end end |
#pipelined(&block) ⇒ Object
This method is used in Redis adapter “stubbing” it here to keep the interface
122 123 124 |
# File 'lib/cache/adapters/memory_adapters/map_adapter.rb', line 122 def pipelined(&block) block.call end |
#set_bool(key, val) ⇒ Object
Bool
72 73 74 |
# File 'lib/cache/adapters/memory_adapters/map_adapter.rb', line 72 def set_bool(key, val) @map[key] = val end |
#set_string(key, str) ⇒ Object
57 58 59 |
# File 'lib/cache/adapters/memory_adapters/map_adapter.rb', line 57 def set_string(key, str) @map[key] = str end |
#string(key) ⇒ Object
String
53 54 55 |
# File 'lib/cache/adapters/memory_adapters/map_adapter.rb', line 53 def string(key) @map[key] end |
#union_sets(set_keys) ⇒ Object
99 100 101 102 103 104 105 |
# File 'lib/cache/adapters/memory_adapters/map_adapter.rb', line 99 def union_sets(set_keys) array = set_keys.each_with_object([]) do |key, memo| memo << get_set(key) end.flatten Set.new(array) end |