// Copyright (C) 2020-2022 Joel Rosdahl and other contributors // // See doc/AUTHORS.adoc for a complete list of contributors. // // This program is free software; you can redistribute it and/or modify it // under the terms of the GNU General Public License as published by the Free // Software Foundation; either version 3 of the License, or (at your option) // any later version. // // This program is distributed in the hope that it will be useful, but WITHOUT // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for // more details. // // You should have received a copy of the GNU General Public License along with // this program; if not, write to the Free Software Foundation, Inc., 51 // Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA #pragma once #include "Fd.hpp" #include #include #include #include namespace core { // This class extracts the parts of a result entry to a directory. class ResultExtractor : public Result::Deserializer::Visitor { public: using GetRawFilePathFunction = std::function; //`result_path` should be the path to the local result entry file if the // result comes from local storage. ResultExtractor( const std::string& output_directory, std::optional get_raw_file_path = std::nullopt); void on_embedded_file(uint8_t file_number, Result::FileType file_type, nonstd::span data) override; void on_raw_file(uint8_t file_number, Result::FileType file_type, uint64_t file_size) override; private: std::string m_output_directory; std::optional m_get_raw_file_path; }; } // namespace core