class ActiveRecord::ConnectionAdapters::QueryCache::Store

:nodoc:

def [](key)

def [](key)
  check_version
  return unless @enabled
  if entry = @map.delete(key)
    @map[key] = entry
  end
end

def check_version

def check_version
  if @current_version != @version.value
    @map.clear
    @current_version = @version.value
  end
end

def clear

def clear
  @map.clear
  self
end

def compute_if_absent(key)

def compute_if_absent(key)
  check_version
  return yield unless @enabled
  if entry = @map.delete(key)
    return @map[key] = entry
  end
  if @max_size && @map.size >= @max_size
    @map.shift # evict the oldest entry
  end
  @map[key] ||= yield
end

def empty?

def empty?
  check_version
  @map.empty?
end

def initialize(version, max_size)

def initialize(version, max_size)
  @version = version
  @current_version = version.value
  @map = {}
  @max_size = max_size
  @enabled = false
  @dirties = true
end

def size

def size
  check_version
  @map.size
end