lib/perobs/BTreeNodeCache.rb in perobs-3.0.2 vs lib/perobs/BTreeNodeCache.rb in perobs-4.0.0
- old
+ new
@@ -29,15 +29,16 @@
module PEROBS
class BTreeNodeCache
- def initialize
+ def initialize(tree)
+ @tree = tree
clear
end
- def [](address)
+ def get(address)
if (node = @modified_nodes[address])
return node
end
if (node = @top_nodes[address])
@@ -46,36 +47,37 @@
if (node = @ephemeral_nodes[address])
return node
end
- nil
+ BTreeNode::load(@tree, address)
end
def set_root(node)
node = node.get_node if node.is_a?(BTreeNodeLink)
@top_nodes = {}
@top_nodes[node.node_address] = node
end
- def insert(node)
+ def insert(node, modified = true)
unless node
PEROBS.log.fatal "nil cannot be cached"
end
node = node.get_node if node.is_a?(BTreeNodeLink)
+ if modified
+ @modified_nodes[node.node_address] = node
+ end
@ephemeral_nodes[node.node_address] = node
if !@top_nodes.include?(node) && node.is_top?
@top_nodes[node.node_address] = node
end
end
- def mark_as_modified(node)
- node = node.get_node if node.is_a?(BTreeNodeLink)
- @modified_nodes[node.node_address] = node
- insert(node)
+ def _collect(address, ruby_object_id)
+ # Just a dummy for now
end
# Remove a node from the cache.
# @param address [Integer] address of node to remove.
def delete(address)