Class: Vmit::BufferedRegistry
Overview
Wraps a registry providing buffered semantics. All writes are buffered until save! is called.
Changes in the wrapped registry for already read keys are not reflected until reload! is called.
reg = ufferedRegistry.new(backing_registry)
reg[:key1] = "value" # backing_registry not changed
reg.save! # backing_registry changed
Instance Method Summary collapse
- #[](key) ⇒ Object
- #[]=(key, val) ⇒ Object
-
#initialize(registry) ⇒ BufferedRegistry
constructor
A new instance of BufferedRegistry.
- #reload! ⇒ Object
- #save! ⇒ Object
Constructor Details
#initialize(registry) ⇒ BufferedRegistry
Returns a new instance of BufferedRegistry.
43 44 45 46 |
# File 'lib/vmit/registry.rb', line 43 def initialize(registry) @buffer = Hash.new @registry = registry end |
Instance Method Details
#[](key) ⇒ Object
48 49 50 51 52 53 |
# File 'lib/vmit/registry.rb', line 48 def [](key) if not @buffer.has_key?(key) @buffer[key] = @registry[key] end @buffer[key] end |
#[]=(key, val) ⇒ Object
55 56 57 |
# File 'lib/vmit/registry.rb', line 55 def []=(key, val) @buffer[key] = val end |
#reload! ⇒ Object
65 66 67 68 69 |
# File 'lib/vmit/registry.rb', line 65 def reload! @buffer.keys.each do |key| @buffer[key] = @registry[key] end end |
#save! ⇒ Object
59 60 61 62 63 |
# File 'lib/vmit/registry.rb', line 59 def save! @buffer.each do |key, val| @registry[key] = val end end |