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)