Class: SplitIoClient::Cache::Adapters::MemoryAdapters::MapAdapter

Inherits:
Object
  • Object
show all
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

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

Returns:

  • (Boolean)


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?

Returns:

  • (Boolean)


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

#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