blob: 2686f377296ad744ebf2aef54accbe1b1a34c0c3 [file] [log] [blame]
// Copyright 2020 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "decompressor.h"
#include <zircon/errors.h>
#include <memory>
#include "chunked.h"
#include "lz4.h"
#include "zstd-plain.h"
#include "zstd-seekable.h"
namespace blobfs {
zx_status_t Decompressor::Create(CompressionAlgorithm algorithm,
std::unique_ptr<Decompressor>* out) {
switch (algorithm) {
case CompressionAlgorithm::LZ4:
*out = std::make_unique<LZ4Decompressor>();
break;
case CompressionAlgorithm::ZSTD:
*out = std::make_unique<ZSTDDecompressor>();
break;
case CompressionAlgorithm::ZSTD_SEEKABLE:
*out = std::make_unique<ZSTDSeekableDecompressor>();
break;
case CompressionAlgorithm::CHUNKED:
*out = std::make_unique<ChunkedDecompressor>();
break;
default:
return ZX_ERR_NOT_SUPPORTED;
}
return ZX_OK;
}
} // namespace blobfs