class ActiveSupport::Cache::MemcachedStore::Codec
Constants
- COMPRESSED_FLAG
- RAW_FLAG
Older versions of this gem would use 0 for the flags whether or not the value was marshal dumped. By setting this flag, we can tell if it were set with an older version for backwards compatible decoding.
- SERIALIZED_FLAG
use dalli compatible flags
Public Class Methods
new(serializer: Marshal, compressor: nil)
click to toggle source
# File lib/active_support/cache/memcached_store.rb, line 27 def initialize(serializer: Marshal, compressor: nil) @serializer = serializer @compressor = compressor end
Public Instance Methods
decode(_key, value, flags)
click to toggle source
# File lib/active_support/cache/memcached_store.rb, line 45 def decode(_key, value, flags) if (flags & COMPRESSED_FLAG) != 0 value = @compressor.decompress(value) end if (flags & SERIALIZED_FLAG) != 0 @serializer.load(value) elsif flags == 0 # legacy cache value @serializer.load(value) rescue value else value end end
encode(_key, value, flags)
click to toggle source
# File lib/active_support/cache/memcached_store.rb, line 32 def encode(_key, value, flags) unless value.is_a?(String) flags |= SERIALIZED_FLAG value = @serializer.dump(value) end if @compressor flags |= COMPRESSED_FLAG value = @compressor.compress(value) end flags |= RAW_FLAG if flags == 0 [value, flags] end