FOSSredder 0.5.0
Loading...
Searching...
No Matches
ImportStrategySupport.h
Go to the documentation of this file.
1
5
6#pragma once
7
9
15#include "core/jobs/Scheduler.h"
16
17#include <chrono>
18#include <filesystem>
19#include <memory>
20#include <mutex>
21#include <vector>
22
24
25using ImportClock = std::chrono::steady_clock;
26
28 ImportClock::time_point startedAt = ImportClock::now();
29 double renderSec = 0.0;
30 double extractSec = 0.0;
31 double finalizeSec = 0.0;
32};
33
39
41 std::shared_ptr<core::ports::diagnostics::IErrorReporter> errorReporter);
42};
43
44void ensureDirectoryExists(const std::filesystem::path& path,
46 const char* origin);
47
50
53 const ImportRequest& req);
54
55std::vector<internal::PageWork> collectPageWork(const ImportRequest& req,
58 const std::shared_ptr<core::ports::document_image_processing::IDocumentImageProcessor>& documentImageProcessor,
59 const std::shared_ptr<core::ports::text_recognition::ITextRecognizer>& tesseract,
60 SchedulerResources& resources,
61 const internal::ProgressReporter& report,
63 ImportResult& out,
64 std::mutex& artifactsMutex);
65
67 const ImportRequest& req,
68 const std::vector<internal::PageWork>& pages,
69 size_t totalPages,
70 const internal::FinalizeStats& finalizeStats,
71 const ImportRunTimings& timings,
73
74}
Document image processing port for import workflows.
Declares the structured diagnostics reporting port.
Text recognition port.
Declares private helper types and functions for the import pipeline implementation.
Request types for PDF rendering operations.
Result types for PDF rendering operations.
Declares a bounded worker queue and a simple slot limiter for import tasks.
Runs background tasks on a bounded worker queue.
Definition Scheduler.h:55
Limits concurrent access to a bounded number of slots.
Definition Scheduler.h:27
Port for reporting structured diagnostic error events.
std::function< void(double, const std::string &)> ProgressReporter
core::ports::pdf_rendering::RenderRequest makeRenderRequest(const ImportRequest &req)
std::vector< internal::PageWork > collectPageWork(const ImportRequest &req, const core::ports::pdf_rendering::RenderResult &renderResult, const core::ports::pdf_rendering::ExtractResult &extractResult, const std::shared_ptr< core::ports::document_image_processing::IDocumentImageProcessor > &documentImageProcessor, const std::shared_ptr< core::ports::text_recognition::ITextRecognizer > &tesseract, SchedulerResources &resources, const internal::ProgressReporter &report, core::ports::diagnostics::IErrorReporter *errorReporter, ImportResult &out, std::mutex &artifactsMutex)
internal::ProgressReporter makeProgressReporter(const ImportRequest &req, core::ports::diagnostics::IErrorReporter *errorReporter)
void ensureDirectoryExists(const std::filesystem::path &path, core::ports::diagnostics::IErrorReporter *errorReporter, const char *origin)
core::ports::pdf_rendering::ExtractRequest makeExtractRequest(const core::ports::pdf_rendering::RenderRequest &renderRequest, const ImportRequest &req)
void attachMetricsArtifact(ImportResult &out, const ImportRequest &req, const std::vector< internal::PageWork > &pages, size_t totalPages, const internal::FinalizeStats &finalizeStats, const ImportRunTimings &timings, core::ports::diagnostics::IErrorReporter *errorReporter)
std::chrono::steady_clock ImportClock
SchedulerResources(const ImportRequest &req, std::shared_ptr< core::ports::diagnostics::IErrorReporter > errorReporter)