Module: ActiveSupport::Cache::SerializerWithFallback::Marshal70WithFallback

Extended by:
Marshal70WithFallback
Includes:
ActiveSupport::Cache::SerializerWithFallback
Included in:
Marshal70WithFallback
Defined in:
lib/active_support/cache/serializer_with_fallback.rb

Constant Summary collapse

MARK_UNCOMPRESSED =
"\x00".b.freeze
MARK_COMPRESSED =
"\x01".b.freeze

Instance Method Summary collapse

Methods included from ActiveSupport::Cache::SerializerWithFallback

[], #load

Instance Method Details

#_load(marked) ⇒ Object



88
89
90
91
92
# File 'lib/active_support/cache/serializer_with_fallback.rb', line 88

def _load(marked)
  dumped = marked.byteslice(1..-1)
  dumped = Zlib::Inflate.inflate(dumped) if marked.start_with?(MARK_COMPRESSED)
  Cache::Entry.unpack(marshal_load(dumped))
end

#dump(entry) ⇒ Object



73
74
75
# File 'lib/active_support/cache/serializer_with_fallback.rb', line 73

def dump(entry)
  MARK_UNCOMPRESSED + Marshal.dump(entry.pack)
end

#dump_compressed(entry, threshold) ⇒ Object



77
78
79
80
81
82
83
84
85
86
# File 'lib/active_support/cache/serializer_with_fallback.rb', line 77

def dump_compressed(entry, threshold)
  dumped = Marshal.dump(entry.pack)

  if dumped.bytesize >= threshold
    compressed = Zlib::Deflate.deflate(dumped)
    return MARK_COMPRESSED + compressed if compressed.bytesize < dumped.bytesize
  end

  MARK_UNCOMPRESSED + dumped
end

#dumped?(dumped) ⇒ Boolean

Returns:

  • (Boolean)


94
95
96
# File 'lib/active_support/cache/serializer_with_fallback.rb', line 94

def dumped?(dumped)
  dumped.start_with?(MARK_UNCOMPRESSED, MARK_COMPRESSED)
end