class MemcachePod::Memory

Public Class Methods

new(max_memory) click to toggle source
# File lib/memcachepod/memory.rb, line 7
def initialize(max_memory)
  @max_memory = max_memory.to_i
  @memory_pool = Hash.new
end

Public Instance Methods

delete(key) click to toggle source
# File lib/memcachepod/memory.rb, line 30
def delete(key)
  if(@memory_pool.has_key?(key))
    @memory_pool.delete(key)
  end
end
flush() click to toggle source
# File lib/memcachepod/memory.rb, line 36
def flush()
  @memory_pool = Hash.new
end
get(key, options=nil) click to toggle source
# File lib/memcachepod/memory.rb, line 12
def get(key, options=nil)
  remove_expires()
  if @memory_pool.has_key?(key)
    return @memory_pool[key].body
  else
    return nil
  end
end
get_memory_usage() click to toggle source
# File lib/memcachepod/memory.rb, line 46
def get_memory_usage
  total = 0
  @memory_pool.map {|k,v|
    total += v.body.size
  }
  return total
end
get_status() click to toggle source
# File lib/memcachepod/memory.rb, line 40
def get_status
  return @memory_pool.map {|k,v|
    v.get_status
  }
end
set(key, value, ttl=0, options=nil) click to toggle source
# File lib/memcachepod/memory.rb, line 21
def set(key, value, ttl=0, options=nil)
  remove_expires()
  if(@memory_pool.has_key?(key))
    @memory_pool[key].update(value,ttl)
  else
    @memory_pool[key] = MemoryEntry.new(value,ttl)
  end
end

Private Instance Methods

remove_expires() click to toggle source
# File lib/memcachepod/memory.rb, line 56
def remove_expires()
  @memory_pool.each_key{ |key|
    entry = @memory_pool[key]
    if entry.expired?
      @memory_pool.delete(key)
      #printf( "remove 1, key : %s \n", key )
    end
  }

  total = get_memory_usage

  @memory_pool.each_key{ |key|
    if @max_memory <= total
      entry = @memory_pool[key]
      total -= entry.body.size
      @memory_pool.delete(key)
      #printf( "remove 2, key : %s \n", key )
    else
      break
    end
  }

end