class Bizside::Cache::Entry

Constants

DEFAULT_COMPRESS_LIMIT

Public Class Methods

new(value, options = {}) click to toggle source
# File lib/bizside/cache/entry.rb, line 6
def initialize(value, options = {})
  if should_compress?(value, options)
    @value = compress(value)
    @compressed = true
  else
    @value = value
  end

  @created_at = Time.now.to_f
  @expires_in = options[:expires_in]
  @expires_in = @expires_in.to_f if @expires_in
end

Public Instance Methods

dup_value!() click to toggle source
# File lib/bizside/cache/entry.rb, line 56
def dup_value!
  convert_version_4beta1_entry! if defined?(@v)

  if @value && !compressed? && !(@value.is_a?(Numeric) || @value == true || @value == false)
    if @value.is_a?(String)
      @value = @value.dup
    else
      @value = Marshal.load(Marshal.dump(@value))
    end
  end
end
expired?() click to toggle source
# File lib/bizside/cache/entry.rb, line 24
def expired?
  convert_version_4beta1_entry! if defined?(@v)
  @expires_in && @created_at + @expires_in <= Time.now.to_f
end
expires_at() click to toggle source
# File lib/bizside/cache/entry.rb, line 29
def expires_at
  @expires_in ? @created_at + @expires_in : nil
end
expires_at=(value) click to toggle source
# File lib/bizside/cache/entry.rb, line 33
def expires_at=(value)
  if value
    @expires_in = value.to_f - @created_at
  else
    @expires_in = nil
  end
end
size() click to toggle source
# File lib/bizside/cache/entry.rb, line 41
def size
  if defined?(@s)
    @s
  else
    case value
    when NilClass
      0
    when String
      @value.bytesize
    else
      @s = Marshal.dump(@value).bytesize
    end
  end
end
value() click to toggle source
# File lib/bizside/cache/entry.rb, line 19
def value
  convert_version_4beta1_entry! if defined?(@v)
  compressed? ? uncompress(@value) : @value
end

Private Instance Methods

compress(value) click to toggle source
# File lib/bizside/cache/entry.rb, line 85
def compress(value)
  Zlib::Deflate.deflate(Marshal.dump(value))
end
compressed?() click to toggle source
# File lib/bizside/cache/entry.rb, line 81
def compressed?
  defined?(@compressed) ? @compressed : false
end
convert_version_4beta1_entry!() click to toggle source
# File lib/bizside/cache/entry.rb, line 93
def convert_version_4beta1_entry!
  if defined?(@v)
    @value = @v
    remove_instance_variable(:@v)
  end

  if defined?(@c)
    @compressed = @c
    remove_instance_variable(:@c)
  end

  if defined?(@x) && @x
    @created_at ||= Time.now.to_f
    @expires_in = @x - @created_at
    remove_instance_variable(:@x)
  end
end
should_compress?(value, options) click to toggle source
# File lib/bizside/cache/entry.rb, line 70
def should_compress?(value, options)
  if value && options[:compress]
    compress_threshold = options[:compress_threshold] || DEFAULT_COMPRESS_LIMIT
    serialized_value_size = (value.is_a?(String) ? value : Marshal.dump(value)).bytesize

    return true if serialized_value_size >= compress_threshold
  end

  false
end
uncompress(value) click to toggle source
# File lib/bizside/cache/entry.rb, line 89
def uncompress(value)
  Marshal.load(Zlib::Inflate.inflate(value))
end