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.
63 64 65 66 67 68 |
# File 'lib/graphql/execution/lazy/lazy_method_map.rb', line 63 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.
70 71 72 73 74 |
# File 'lib/graphql/execution/lazy/lazy_method_map.rb', line 70 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.
76 77 78 79 80 |
# File 'lib/graphql/execution/lazy/lazy_method_map.rb', line 76 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.
82 83 84 85 |
# File 'lib/graphql/execution/lazy/lazy_method_map.rb', line 82 def initialize_copy(other) @semaphore = Mutex.new @storage = other.copy_storage end |