Parolin 0.7.9 6796
Console (soon DLLs) to do a tar like job
Loading...
Searching...
No Matches
Pzstd.h
Go to the documentation of this file.
1/*
2 * Copyright (c) Meta Platforms, Inc. and affiliates.
3 * All rights reserved.
4 *
5 * This source code is licensed under both the BSD-style license (found in the
6 * LICENSE file in the root directory of this source tree) and the GPLv2 (found
7 * in the COPYING file in the root directory of this source tree).
8 */
9#pragma once
10
11#include "ErrorHolder.h"
12#include "Logging.h"
13#include "Options.h"
14#include "utils/Buffer.h"
15#include "utils/Range.h"
16#include "utils/ResourcePool.h"
17#include "utils/ThreadPool.h"
18#include "utils/WorkQueue.h"
19#define ZSTD_STATIC_LINKING_ONLY
20#define ZSTD_DISABLE_DEPRECATE_WARNINGS /* No deprecation warnings, pzstd itself is deprecated
21 * and uses deprecated functions
22 */
23#include "zstd.h"
24#undef ZSTD_STATIC_LINKING_ONLY
25
26#include <cstddef>
27#include <cstdint>
28#include <memory>
29
30namespace pzstd {
38int pzstdMain(const Options& options);
39
41 public:
42 SharedState(const Options& options) : log(options.verbosity) {
43 if (!options.decompress) {
44 auto parameters = options.determineParameters();
46 [this, parameters]() -> ZSTD_CStream* {
47 this->log(kLogVerbose, "%s\n", "Creating new ZSTD_CStream");
48 auto zcs = ZSTD_createCStream();
49 if (zcs) {
51 zcs, nullptr, 0, parameters, 0);
52 if (ZSTD_isError(err)) {
54 return nullptr;
55 }
56 }
57 return zcs;
58 },
59 [](ZSTD_CStream *zcs) {
61 }});
62 } else {
64 [this]() -> ZSTD_DStream* {
65 this->log(kLogVerbose, "%s\n", "Creating new ZSTD_DStream");
66 auto zds = ZSTD_createDStream();
67 if (zds) {
68 auto err = ZSTD_initDStream(zds);
69 if (ZSTD_isError(err)) {
71 return nullptr;
72 }
73 }
74 return zds;
75 },
76 [](ZSTD_DStream *zds) {
78 }});
79 }
80 }
81
82 ~SharedState() {
83 // The resource pools have references to this, so destroy them first.
84 cStreamPool.reset();
85 dStreamPool.reset();
86 }
87
88 Logger log;
89 ErrorHolder errorHolder;
90 std::unique_ptr<ResourcePool<ZSTD_CStream>> cStreamPool;
91 std::unique_ptr<ResourcePool<ZSTD_DStream>> dStreamPool;
92};
93
109std::uint64_t asyncCompressChunks(
110 SharedState& state,
111 WorkQueue<std::shared_ptr<BufferWorkQueue>>& chunks,
112 ThreadPool& executor,
113 FILE* fd,
114 std::uintmax_t size,
115 std::size_t numThreads,
116 ZSTD_parameters parameters);
117
131std::uint64_t asyncDecompressFrames(
132 SharedState& state,
133 WorkQueue<std::shared_ptr<BufferWorkQueue>>& frames,
134 ThreadPool& executor,
135 FILE* fd);
136
148std::uint64_t writeFile(
149 SharedState& state,
150 WorkQueue<std::shared_ptr<BufferWorkQueue>>& outs,
151 FILE* outputFd,
152 bool decompress);
153}
Definition ResourcePool.h:31
Definition Pzstd.h:38
SharedState(const Options &options)
Definition Pzstd.h:40
ErrorHolder errorHolder
Definition Pzstd.h:87
~SharedState()
Definition Pzstd.h:80
std::unique_ptr< ResourcePool< ZSTD_DStream > > dStreamPool
Definition Pzstd.h:89
std::unique_ptr< ResourcePool< ZSTD_CStream > > cStreamPool
Definition Pzstd.h:88
Logger log
Definition Pzstd.h:86
Definition ErrorHolder.h:16
constexpr int kLogVerbose
Definition Logging.h:19
std::uint64_t asyncCompressChunks(SharedState &state, WorkQueue< std::shared_ptr< BufferWorkQueue > > &chunks, ThreadPool &executor, FILE *fd, std::uintmax_t size, size_t numThreads, ZSTD_parameters params)
Definition Pzstd.cpp:377
std::uint64_t writeFile(SharedState &state, WorkQueue< std::shared_ptr< BufferWorkQueue > > &outs, FILE *outputFd, bool decompress)
Definition Pzstd.cpp:569
std::uint64_t asyncDecompressFrames(SharedState &state, WorkQueue< std::shared_ptr< BufferWorkQueue > > &frames, ThreadPool &executor, FILE *fd)
Definition Pzstd.cpp:492
int pzstdMain(const Options &options)
Definition Pzstd.cpp:165
Definition zstd_compress_internal.h:358
Definition zstd_decompress_internal.h:126
Definition zstd_v04.c:255
Definition Options.h:22
size_t size
Definition platform.h:559
const lzma_options_lzma * options
Definition container.h:545
#define ZSTD_isError
Definition zstd_internal.h:49
size_t ZSTD_freeCStream(ZSTD_CStream *zcs)
Definition zstd_compress.c:5172
size_t ZSTD_initCStream_advanced(ZSTD_CStream *zcs, const void *dict, size_t dictSize, ZSTD_parameters params, unsigned long long pss)
Definition zstd_compress.c:5264
ZSTD_CStream * ZSTD_createCStream(void)
Definition zstd_compress.c:5156
ZSTD_DStream * ZSTD_createDStream(void)
Definition zstd_decompress.c:1549
size_t ZSTD_freeDStream(ZSTD_DStream *zds)
Definition zstd_decompress.c:1565
size_t ZSTD_initDStream(ZSTD_DStream *zds)
Definition zstd_decompress.c:1627