mirror of
https://github.com/mhx/dwarfs.git
synced 2025-09-14 06:48:39 -04:00
refactor(block_merger): move to internal namespace
This commit is contained in:
parent
f76d341317
commit
cb167c450d
@ -26,7 +26,7 @@
|
|||||||
|
|
||||||
#include <fmt/format.h>
|
#include <fmt/format.h>
|
||||||
|
|
||||||
namespace dwarfs {
|
namespace dwarfs::internal {
|
||||||
|
|
||||||
class block_merger_base {
|
class block_merger_base {
|
||||||
public:
|
public:
|
||||||
@ -112,4 +112,4 @@ class block_merger {
|
|||||||
virtual void finish(source_type src) = 0;
|
virtual void finish(source_type src) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace dwarfs
|
} // namespace dwarfs::internal
|
@ -40,10 +40,10 @@
|
|||||||
#include <range/v3/view/join.hpp>
|
#include <range/v3/view/join.hpp>
|
||||||
#include <range/v3/view/transform.hpp>
|
#include <range/v3/view/transform.hpp>
|
||||||
|
|
||||||
#include <dwarfs/block_merger.h>
|
#include <dwarfs/internal/block_merger.h>
|
||||||
#include <dwarfs/terminal.h>
|
#include <dwarfs/terminal.h>
|
||||||
|
|
||||||
namespace dwarfs::detail {
|
namespace dwarfs::internal::detail {
|
||||||
|
|
||||||
template <typename SourceT, typename BlockT, typename BlockPolicy>
|
template <typename SourceT, typename BlockT, typename BlockPolicy>
|
||||||
class multi_queue_block_merger_impl : public block_merger_base,
|
class multi_queue_block_merger_impl : public block_merger_base,
|
||||||
@ -312,4 +312,4 @@ class multi_queue_block_merger_impl : public block_merger_base,
|
|||||||
on_block_merged_callback_type on_block_merged_callback_;
|
on_block_merged_callback_type on_block_merged_callback_;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace dwarfs::detail
|
} // namespace dwarfs::internal::detail
|
@ -27,10 +27,10 @@
|
|||||||
|
|
||||||
#include <folly/Function.h>
|
#include <folly/Function.h>
|
||||||
|
|
||||||
#include <dwarfs/block_merger.h>
|
#include <dwarfs/internal/block_merger.h>
|
||||||
#include <dwarfs/detail/multi_queue_block_merger_impl.h>
|
#include <dwarfs/internal/detail/multi_queue_block_merger_impl.h>
|
||||||
|
|
||||||
namespace dwarfs {
|
namespace dwarfs::internal {
|
||||||
|
|
||||||
class block_merger_whole_block_policy {
|
class block_merger_whole_block_policy {
|
||||||
public:
|
public:
|
||||||
@ -152,4 +152,4 @@ class multi_queue_block_merger : public block_merger<SourceT, BlockT> {
|
|||||||
std::unique_ptr<state> state_;
|
std::unique_ptr<state> state_;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace dwarfs
|
} // namespace dwarfs::internal
|
@ -39,8 +39,8 @@
|
|||||||
#include <dwarfs/compression_metadata_requirements.h>
|
#include <dwarfs/compression_metadata_requirements.h>
|
||||||
#include <dwarfs/filesystem_writer.h>
|
#include <dwarfs/filesystem_writer.h>
|
||||||
#include <dwarfs/fstypes.h>
|
#include <dwarfs/fstypes.h>
|
||||||
|
#include <dwarfs/internal/multi_queue_block_merger.h>
|
||||||
#include <dwarfs/logger.h>
|
#include <dwarfs/logger.h>
|
||||||
#include <dwarfs/multi_queue_block_merger.h>
|
|
||||||
#include <dwarfs/progress.h>
|
#include <dwarfs/progress.h>
|
||||||
#include <dwarfs/util.h>
|
#include <dwarfs/util.h>
|
||||||
#include <dwarfs/worker_group.h>
|
#include <dwarfs/worker_group.h>
|
||||||
@ -556,9 +556,8 @@ class filesystem_writer_ final : public filesystem_writer::impl {
|
|||||||
size_t size() const override { return image_size_; }
|
size_t size() const override { return image_size_; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
using block_merger_type =
|
using block_merger_type = internal::multi_queue_block_merger<
|
||||||
multi_queue_block_merger<fragment_category, std::unique_ptr<fsblock>,
|
fragment_category, std::unique_ptr<fsblock>, fsblock_merger_policy>;
|
||||||
fsblock_merger_policy>;
|
|
||||||
using block_holder_type = block_merger_type::block_holder_type;
|
using block_holder_type = block_merger_type::block_holder_type;
|
||||||
|
|
||||||
block_compressor const&
|
block_compressor const&
|
||||||
|
@ -36,7 +36,7 @@
|
|||||||
#include <folly/String.h>
|
#include <folly/String.h>
|
||||||
#include <folly/Synchronized.h>
|
#include <folly/Synchronized.h>
|
||||||
|
|
||||||
#include <dwarfs/multi_queue_block_merger.h>
|
#include <dwarfs/internal/multi_queue_block_merger.h>
|
||||||
|
|
||||||
using namespace dwarfs;
|
using namespace dwarfs;
|
||||||
|
|
||||||
@ -107,10 +107,10 @@ class sized_block_merger_policy {
|
|||||||
template <typename BlockT>
|
template <typename BlockT>
|
||||||
struct timed_release_block {
|
struct timed_release_block {
|
||||||
std::chrono::steady_clock::time_point when;
|
std::chrono::steady_clock::time_point when;
|
||||||
merged_block_holder<BlockT> holder;
|
internal::merged_block_holder<BlockT> holder;
|
||||||
|
|
||||||
timed_release_block(std::chrono::steady_clock::time_point when,
|
timed_release_block(std::chrono::steady_clock::time_point when,
|
||||||
merged_block_holder<BlockT>&& holder)
|
internal::merged_block_holder<BlockT>&& holder)
|
||||||
: when{when}
|
: when{when}
|
||||||
, holder{std::move(holder)} {}
|
, holder{std::move(holder)} {}
|
||||||
|
|
||||||
@ -266,7 +266,7 @@ do_run(std::mutex& out_mx, size_t run, std::mt19937& delay_rng) {
|
|||||||
synchronized<std::vector<timed_release_block<BlockT>>> merged_queue;
|
synchronized<std::vector<timed_release_block<BlockT>>> merged_queue;
|
||||||
std::vector<BlockT> merged;
|
std::vector<BlockT> merged;
|
||||||
|
|
||||||
auto merge_cb = [&](merged_block_holder<BlockT> holder) {
|
auto merge_cb = [&](internal::merged_block_holder<BlockT> holder) {
|
||||||
merged.emplace_back(std::move(holder.value()));
|
merged.emplace_back(std::move(holder.value()));
|
||||||
|
|
||||||
if (use_merged_queue) {
|
if (use_merged_queue) {
|
||||||
@ -306,7 +306,7 @@ do_run(std::mutex& out_mx, size_t run, std::mt19937& delay_rng) {
|
|||||||
while (running || !merged_queue.rlock()->empty()) {
|
while (running || !merged_queue.rlock()->empty()) {
|
||||||
auto now = std::chrono::steady_clock::now();
|
auto now = std::chrono::steady_clock::now();
|
||||||
std::chrono::steady_clock::time_point next;
|
std::chrono::steady_clock::time_point next;
|
||||||
std::vector<merged_block_holder<BlockT>> holders;
|
std::vector<internal::merged_block_holder<BlockT>> holders;
|
||||||
|
|
||||||
merged_queue.withWLock([&](auto&& q) {
|
merged_queue.withWLock([&](auto&& q) {
|
||||||
while (!q.empty()) {
|
while (!q.empty()) {
|
||||||
@ -326,7 +326,7 @@ do_run(std::mutex& out_mx, size_t run, std::mt19937& delay_rng) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if constexpr (PartialRelease) {
|
if constexpr (PartialRelease) {
|
||||||
std::vector<merged_block_holder<BlockT>> partial;
|
std::vector<internal::merged_block_holder<BlockT>> partial;
|
||||||
|
|
||||||
for (auto& h : holders) {
|
for (auto& h : holders) {
|
||||||
if (partial_release_repeat_dist(partial_rng) > 0) {
|
if (partial_release_repeat_dist(partial_rng) > 0) {
|
||||||
@ -467,7 +467,7 @@ block_merger_test(size_t const max_runs) {
|
|||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
TEST(block_merger, random) {
|
TEST(block_merger, random) {
|
||||||
using merger_type = dwarfs::multi_queue_block_merger<size_t, block>;
|
using merger_type = dwarfs::internal::multi_queue_block_merger<size_t, block>;
|
||||||
|
|
||||||
auto [passes, fails] = block_merger_test<merger_type>(max_runs_regular);
|
auto [passes, fails] = block_merger_test<merger_type>(max_runs_regular);
|
||||||
|
|
||||||
@ -477,8 +477,8 @@ TEST(block_merger, random) {
|
|||||||
|
|
||||||
TEST(block_merger, random_sized) {
|
TEST(block_merger, random_sized) {
|
||||||
using merger_type =
|
using merger_type =
|
||||||
dwarfs::multi_queue_block_merger<size_t, sized_block,
|
dwarfs::internal::multi_queue_block_merger<size_t, sized_block,
|
||||||
sized_block_merger_policy>;
|
sized_block_merger_policy>;
|
||||||
|
|
||||||
auto [passes, fails] = block_merger_test<merger_type>(max_runs_regular);
|
auto [passes, fails] = block_merger_test<merger_type>(max_runs_regular);
|
||||||
|
|
||||||
@ -488,8 +488,8 @@ TEST(block_merger, random_sized) {
|
|||||||
|
|
||||||
TEST(block_merger, random_sized_partial) {
|
TEST(block_merger, random_sized_partial) {
|
||||||
using merger_type =
|
using merger_type =
|
||||||
dwarfs::multi_queue_block_merger<size_t, sized_block,
|
dwarfs::internal::multi_queue_block_merger<size_t, sized_block,
|
||||||
sized_block_merger_policy>;
|
sized_block_merger_policy>;
|
||||||
|
|
||||||
auto [passes, fails] = block_merger_test<merger_type, true>(max_runs_partial);
|
auto [passes, fails] = block_merger_test<merger_type, true>(max_runs_partial);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user