Sen API
Sen Libraries
Loading...
Searching...
No Matches
recording_merger.h
Go to the documentation of this file.
1// === recording_merger.h ==============================================================================================
2// Sen Infrastructure
3// Released under the Apache License v2.0 (SPDX-License-Identifier Apache-2.0).
4// See the LICENSE.txt file for more information.
5// © Airbus SAS, Airbus Helicopters, and Airbus Defence and Space SAU/GmbH/SAS.
6// =====================================================================================================================
7
8#ifndef SEN_DB_RECORDING_MERGER_H
9#define SEN_DB_RECORDING_MERGER_H
10
11// sen
13
14// std
15#include <cstddef>
16#include <cstdint>
17#include <filesystem>
18#include <functional>
19#include <string>
20#include <variant>
21#include <vector>
22
23namespace sen::db
24{
25
33
36{
37public:
38 RecordingMergeObject(std::filesystem::path archivePath,
39 uint32_t objectId,
40 std::string session,
41 std::string bus,
42 std::string name,
43 std::string type);
44
45 [[nodiscard]] const std::filesystem::path& getArchivePath() const noexcept;
46
47 [[nodiscard]] uint32_t getObjectId() const noexcept;
48
49 [[nodiscard]] const std::string& getSession() const noexcept;
50
51 [[nodiscard]] const std::string& getBus() const noexcept;
52
53 [[nodiscard]] const std::string& getName() const noexcept;
54
55 [[nodiscard]] const std::string& getType() const noexcept;
56
60 [[nodiscard]] std::string formatFullName() const;
61
62private:
63 std::filesystem::path archivePath_;
64 uint32_t objectId_;
65 std::string session_;
66 std::string bus_;
67 std::string name_;
68 std::string type_;
69};
70
73{
74 std::vector<RecordingMergeObject> objects;
75};
76
79{
80 std::size_t objectIndex = 0U;
81 std::string name;
82};
83
89
92{
93 std::vector<RecordingMergeObjectRename> renamedObjects;
94};
95
98 std::variant<RecordingMergeKeepSelectedObject, RecordingMergeRenameObjects>;
99
102 std::function<RecordingMergeDuplicateObjectResolution(const RecordingMergeDuplicateObject& duplicateObject)>;
103
106using RecordingMergeProgressReporter = std::function<void(std::size_t bytesDone, std::size_t bytesTotal)>;
107
110{
111 std::filesystem::path archivePath;
113};
114
127
132
133} // namespace sen::db
134
135#endif // SEN_DB_RECORDING_MERGER_H
A time duration.
Definition duration.h:25
RecordingMergeObject(std::filesystem::path archivePath, uint32_t objectId, std::string session, std::string bus, std::string name, std::string type)
const std::filesystem::path & getArchivePath() const noexcept
const std::string & getType() const noexcept
const std::string & getSession() const noexcept
const std::string & getName() const noexcept
std::string formatFullName() const
Formats the object full name.
const std::string & getBus() const noexcept
uint32_t getObjectId() const noexcept
std::string name
Definition recording_merger.h:81
std::filesystem::path outputArchive
Definition recording_merger.h:119
std::filesystem::path archivePath
Definition recording_merger.h:111
RecordingMergeMode mode
Definition recording_merger.h:120
std::vector< RecordingMergeInput > inputArchives
Definition recording_merger.h:118
std::size_t selectedObjectIndex
Definition recording_merger.h:87
std::size_t objectIndex
Definition recording_merger.h:80
Duration offset
Definition recording_merger.h:112
RecordingMergeProgressReporter progressReporter
Optional; no progress is reported when it is empty.
Definition recording_merger.h:125
RecordingMergeDuplicateObjectResolver duplicateObjectResolver
Definition recording_merger.h:121
std::vector< RecordingMergeObject > objects
Definition recording_merger.h:74
bool force
Replace a recording archive already present at the output path.
Definition recording_merger.h:123
std::vector< RecordingMergeObjectRename > renamedObjects
Definition recording_merger.h:93
RecordingMergeMode
Timestamp alignment modes supported when merging recording archives.
Definition recording_merger.h:28
std::function< void(std::size_t bytesDone, std::size_t bytesTotal)> RecordingMergeProgressReporter
Reports merge progress. Both values are in bytes of input, and the reporter is called only when the w...
Definition recording_merger.h:106
std::function< RecordingMergeDuplicateObjectResolution(const RecordingMergeDuplicateObject &duplicateObject)> RecordingMergeDuplicateObjectResolver
Callback used to resolve duplicate object names.
Definition recording_merger.h:101
std::variant< RecordingMergeKeepSelectedObject, RecordingMergeRenameObjects > RecordingMergeDuplicateObjectResolution
Decision returned by the duplicate object resolver.
Definition recording_merger.h:97
@ zeroAligned
Definition recording_merger.h:30
@ offsetAligned
Definition recording_merger.h:31
@ normalMerge
Definition recording_merger.h:29
Conflict data passed to the duplicate object resolver.
Definition recording_merger.h:73
Recording input used by the merger.
Definition recording_merger.h:110
Object that we need to keep and discards the other in a duplicate conflict.
Definition recording_merger.h:86
New name selected for one object in a duplicate object conflict.
Definition recording_merger.h:79
Resolution that assigns new names to objects in a duplicate conflict.
Definition recording_merger.h:92
Settings used to merge several recording archives into one archive.
Definition recording_merger.h:117
Definition type_specs.h:19
void mergeRecordings(const RecordingMergeSettings &settings)
Merges recording archives into a single archive.
STL namespace.