Current section
Files
Jump to
Current section
Files
lib/mongo/compressor.ex
defmodule Mongo.Compressor do
@moduledoc false
@zlib_compressor_id 2
if Code.ensure_loaded?(:ezstd) do
@zstd_compressor_id 3
end
def compress(binary, :zlib) do
{@zlib_compressor_id, :zlib.compress(binary)}
end
if Code.ensure_loaded?(:ezstd) do
def compress(binary, :zstd) when is_binary(binary) do
{@zstd_compressor_id, :ezstd.compress(binary)}
end
def compress(iodata, :zstd) when is_list(iodata) do
{@zstd_compressor_id,
iodata
|> IO.iodata_to_binary()
|> :ezstd.compress()}
end
end
def uncompress(binary, @zlib_compressor_id) do
:zlib.uncompress(binary)
end
if Code.ensure_loaded?(:ezstd) do
def uncompress(binary, @zstd_compressor_id) do
:ezstd.decompress(binary)
end
end
def uncompress(binary, :zlib) do
:zlib.uncompress(binary)
end
if Code.ensure_loaded?(:ezstd) do
def uncompress(binary, :zstd) do
:ezstd.decompress(binary)
end
end
end