Class: GraphQL::Execution::Lazy::LazyMethodMap::ConcurrentishMap Private
- Inherits:
-
Object
- Object
- GraphQL::Execution::Lazy::LazyMethodMap::ConcurrentishMap
- Extended by:
- Forwardable
- Defined in:
- lib/graphql/execution/lazy/lazy_method_map.rb
Overview
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
Mock the Concurrent::Map API
Instance Method Summary collapse
- #[]=(key, value) ⇒ Object private
- #compute_if_absent(key) ⇒ Object private
-
#initialize ⇒ ConcurrentishMap
constructor
private
A new instance of ConcurrentishMap.
- #initialize_copy(other) ⇒ Object private
Constructor Details
#initialize ⇒ ConcurrentishMap
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a new instance of ConcurrentishMap.
59 60 61 62 63 64 |
# File 'lib/graphql/execution/lazy/lazy_method_map.rb', line 59 def initialize @semaphore = Mutex.new # Access to this hash must always be managed by the mutex # since it may be modified at runtime @storage = {} end |
Instance Method Details
#[]=(key, value) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
66 67 68 69 70 |
# File 'lib/graphql/execution/lazy/lazy_method_map.rb', line 66 def []=(key, value) @semaphore.synchronize { @storage[key] = value } end |
#compute_if_absent(key) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
72 73 74 75 76 |
# File 'lib/graphql/execution/lazy/lazy_method_map.rb', line 72 def compute_if_absent(key) @semaphore.synchronize { @storage.fetch(key) { @storage[key] = yield } } end |
#initialize_copy(other) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
78 79 80 81 |
# File 'lib/graphql/execution/lazy/lazy_method_map.rb', line 78 def initialize_copy(other) @semaphore = Mutex.new @storage = other.copy_storage end |