Class: Vmit::BufferedRegistry

Inherits:
Registry
  • Object
show all
Defined in:
lib/vmit/registry.rb

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

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