class Enc::Cache::NodeCache

Public Class Methods

new(config) click to toggle source
# File lib/enc/cache/node_cache.rb, line 6
def initialize(config)
  ensure_cache_dir(config.get('jive_enc_cache_dir'))
end

Public Instance Methods

delete!(hostname) click to toggle source
# File lib/enc/cache/node_cache.rb, line 30
def delete!(hostname)
  logger.debug("Deleting cache #{cache_path(hostname)}")
  File.delete(cache_path(hostname)) if File.exist?(cache_path(hostname))
end
exists?(hostname) click to toggle source
# File lib/enc/cache/node_cache.rb, line 10
def exists?(hostname)
  logger.debug("Checking to see if cache file #{cache_path(hostname)} exists")
  File.exist?(cache_path(hostname))
end
read(hostname) click to toggle source
# File lib/enc/cache/node_cache.rb, line 15
def read(hostname)
  logger.debug("Attempting to read cache #{cache_path(hostname)}")
  begin
    File.open(cache_path(hostname), 'r') { |file| Marshal.load(file.read)}
  rescue Errno::ENOENT
    logger.error("The node #{hostname} does not exist in the cache.")
    raise CacheDoesNotExist, "The node #{hostname} does not exist in the cache."
  end
end
write(hostname, node) click to toggle source
# File lib/enc/cache/node_cache.rb, line 25
def write(hostname, node)
  logger.debug("Writing to cache #{cache_path(hostname)}")
  File.open(cache_path(hostname), 'w') { |file| file.write(Marshal.dump(node)) }
end

Protected Instance Methods

cache_path(node) click to toggle source
# File lib/enc/cache/node_cache.rb, line 37
def cache_path(node)
  if node.is_a?String
    return "#{@cache_dir}/#{node}"
  end
  "#{@cache_dir}/#{node.get_hostname}"
end
ensure_cache_dir(cache_dir) click to toggle source
# File lib/enc/cache/node_cache.rb, line 44
def ensure_cache_dir(cache_dir)
  @cache_dir = cache_dir
  unless File.directory?(@cache_dir)
    logger.debug("Creating cache directory #{@cache_dir}")
    begin
      Dir.mkdir(@cache_dir)
    rescue => e
      raise UnableToCreateCacheDirectory, e
    end
  end
end