/workspaces/astro/sol3-sdk/cpp/sol3/core/any_message_log_writer.h Source File

Space-ng SDK: /workspaces/astro/sol3-sdk/cpp/sol3/core/any_message_log_writer.h Source File
Space-ng SDK
any_message_log_writer.h
Go to the documentation of this file.
1 // Copyright (c) Space-ng, inc. All rights reserved.
2 
3 #pragma once
4 
7 #include "sol3/core/msg/message_log_config.h"
8 #include "sol3/core/msg/message_log_header.h"
11 
12 #include <flatbuffers/flatbuffers.h>
13 
14 #include <optional>
15 #include <string>
16 namespace sol3::core {
36  public:
39  msg::MessageLogConfigT const& cfg,
40  MessageSchema const& schema,
41  std::chrono::system_clock::time_point start_stamp);
42 
45 
50  void logMessage(
51  flatbuffers::span<uint8_t const> header_span,
52  flatbuffers::span<uint8_t const> payload_span);
53 
55  void commit(size_t message_count);
56 
58  void rollback();
59 
63  void write(char const* data, size_t size) override;
64 
68  cpp::fs::path closeLog(std::chrono::system_clock::time_point end_stamp);
69 
73  cpp::fs::path rotateLog(std::chrono::system_clock::time_point stamp);
74 
75  cpp::fs::path const& currentLogPath() const { return log_path_; }
76  uint64_t currentLogSizeBytes() const;
77 
78  private:
79  void writeFileHeader(std::chrono::system_clock::time_point start_stamp);
80  void closeAndUpdateFileHeader(
81  std::chrono::system_clock::time_point end_stamp);
82 
83  msg::MessageLogConfigT log_config_;
84  MessagePort port_;
85  std::string host_id_;
86  std::string run_id_;
87  cpp::fs::path log_dir_;
88  cpp::fs::path log_path_;
89  std::chrono::system_clock::time_point log_start_stamp_;
90  std::optional<size_t> log_header_offset_;
91  uint64_t message_count_ = 0;
92  std::optional<SizeDelimitedLogWriter> writer_;
93 
94  MessageSchema payload_schema_;
95  msg::MessageLogHeaderT log_header_;
96  flatbuffers::FlatBufferBuilder log_header_builder_;
97 };
98 } // namespace sol3::core
Definition: any_message_log_writer.h:35
void commit(size_t message_count)
Commit N messages written via write().
void rollback()
Roll back to the last committed position.
cpp::fs::path rotateLog(std::chrono::system_clock::time_point stamp)
uint64_t currentLogSizeBytes() const
AnyMessageLogWriter(msg::MessageLogConfigT const &cfg, MessageSchema const &schema, std::chrono::system_clock::time_point start_stamp)
Construct a writer for the given config and initial epoch.
void logMessage(flatbuffers::span< uint8_t const > header_span, flatbuffers::span< uint8_t const > payload_span)
~AnyMessageLogWriter()
Flush and close any open log file.
cpp::fs::path const & currentLogPath() const
Definition: any_message_log_writer.h:75
void write(char const *data, size_t size) override
cpp::fs::path closeLog(std::chrono::system_clock::time_point end_stamp)
Minimal append-only byte sink for streaming writes.
Definition: stream_writer.h:9
Definition: message_port.h:19
Definition: message_schema.h:12
enum ArtifactFormat string
Camera/host holding the original file.
Definition: any_message_input.h:15