Class: Hypertube::Core::ReferenceCache::ReferencesCache
- Inherits:
-
Object
- Object
- Hypertube::Core::ReferenceCache::ReferencesCache
- Defined in:
- lib/hypertube-ruby-sdk/core/reference_cache/references_cache.rb
Class Method Summary collapse
Instance Method Summary collapse
- #cache_reference(object_reference) ⇒ Object
- #delete_reference(guid) ⇒ Object
-
#initialize ⇒ ReferencesCache
constructor
A new instance of ReferencesCache.
- #resolve_reference(guid) ⇒ Object
Constructor Details
#initialize ⇒ ReferencesCache
Returns a new instance of ReferencesCache.
14 15 16 17 |
# File 'lib/hypertube-ruby-sdk/core/reference_cache/references_cache.rb', line 14 def initialize @references_cache = {} @mutex = Mutex.new end |
Class Method Details
.instance ⇒ Object
7 8 9 10 11 12 |
# File 'lib/hypertube-ruby-sdk/core/reference_cache/references_cache.rb', line 7 def self.instance @mutex ||= Mutex.new @mutex.synchronize do @instance ||= new end end |
Instance Method Details
#cache_reference(object_reference) ⇒ Object
19 20 21 22 23 24 25 |
# File 'lib/hypertube-ruby-sdk/core/reference_cache/references_cache.rb', line 19 def cache_reference(object_reference) uuid_ = generate_uuid @mutex.synchronize do @references_cache[uuid_] = object_reference end uuid_ end |
#delete_reference(guid) ⇒ Object
35 36 37 38 39 40 41 42 43 44 |
# File 'lib/hypertube-ruby-sdk/core/reference_cache/references_cache.rb', line 35 def delete_reference(guid) return false if guid.nil? @mutex.synchronize do return false unless @references_cache.key?(guid) @references_cache.delete(guid) true end end |
#resolve_reference(guid) ⇒ Object
27 28 29 30 31 32 33 |
# File 'lib/hypertube-ruby-sdk/core/reference_cache/references_cache.rb', line 27 def resolve_reference(guid) @mutex.synchronize do raise "Unable to resolve reference with id: #{guid}" if @references_cache[guid].nil? @references_cache[guid] end end |