Antares Simulator
Power System Simulator
in_memory_writer.h
1 /*
2 ** Copyright 2007-2025, RTE (https://www.rte-france.com)
3 ** See AUTHORS.txt
4 ** SPDX-License-Identifier: MPL-2.0
5 ** This file is part of Antares-Simulator,
6 ** Adequacy and Performance assessment for interconnected energy networks.
7 **
8 ** Antares_Simulator is free software: you can redistribute it and/or modify
9 ** it under the terms of the Mozilla Public Licence 2.0 as published by
10 ** the Mozilla Foundation, either version 2 of the License, or
11 ** (at your option) any later version.
12 **
13 ** Antares_Simulator is distributed in the hope that it will be useful,
14 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
15 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 ** Mozilla Public Licence 2.0 for more details.
17 **
18 ** You should have received a copy of the Mozilla Public Licence 2.0
19 ** along with Antares_Simulator. If not, see <https://opensource.org/license/mpl-2-0/>.
20 */
21 #pragma once
22 
23 #include <map>
24 #include <mutex>
25 #include <string>
26 
27 #include <yuni/core/string.h>
28 
29 #include <antares/benchmarking/DurationCollector.h>
30 #include "antares/writer/i_writer.h"
31 
32 namespace Antares::Solver
33 {
34 class InMemoryWriter final: public IResultWriter
35 {
36 public:
37  using MapType = std::map<std::string, std::string, std::less<>>;
38  explicit InMemoryWriter(Benchmarking::DurationCollector& duration_collector);
39  virtual ~InMemoryWriter();
40  void addEntryFromBuffer(const std::filesystem::path& entryPath,
41  std::string& entryContent) override;
42  void addEntryFromFile(const std::filesystem::path& entryPath,
43  const std::filesystem::path& filePath) override;
44  void flush() override;
45  bool needsTheJobQueue() const override;
46  void finalize(bool verbose) override;
47  const MapType& getMap() const;
48 
49 private:
50  std::mutex pMapMutex;
51  // minizip-ng requires a void* as a zip handle.
52  MapType pEntries;
53  // State, to allow/prevent new jobs being added to the queue
54  Benchmarking::DurationCollector& pDurationCollector;
55 };
56 } // namespace Antares::Solver
Definition: i_writer.h:32
Definition: in_memory_writer.h:35
void flush() override
Definition: in_memory_writer.cpp:82
Definition: DurationCollector.h:36