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

Space-ng SDK: /workspaces/astro/sol3-sdk/cpp/sol3/core/message_schema.h Source File
Space-ng SDK
message_schema.h
Go to the documentation of this file.
1 // Copyright (c) Space-ng, inc. All rights reserved.
2 #pragma once
3 
4 #include "sol3/core/fb_json.h"
5 
6 #include <flatbuffers/idl.h>
7 #include <flatbuffers/reflection.h>
8 #include <flatbuffers/stl_emulation.h>
9 
10 namespace sol3::core {
11 
13  public:
15  enum class EvolutionPolicy {
19  ALWAYS,
24  };
25 
26  MessageSchema() = default;
28  flatbuffers::span<uint8_t const> schema_buffer, EvolutionPolicy policy);
29 
30  flatbuffers::span<uint8_t const> schemaBufferSpan() const {
31  return flatbuffers::span<uint8_t const>(
32  schema_buffer_->data(), schema_buffer_->size());
33  }
34 
35  reflection::Schema const* table() const;
36 
37  bool verify(flatbuffers::span<uint8_t const> buffer) const;
38 
39  operator bool() const;
40 
43  flatbuffers::Parser const& parser(
44  JsonFormat format = JsonFormat::SINGLE_LINE) const;
45 
48  flatbuffers::span<uint8_t const> buffer,
49  JsonFormat format = JsonFormat::SINGLE_LINE) const;
50 
51  flatbuffers::span<uint8_t const> fromJson(std::string const& json_str);
52 
54  bool operator==(MessageSchema const& schema) const;
55  bool operator!=(MessageSchema const& schema) const {
56  return !(*this == schema);
57  }
58 
65  std::string conformsTo(MessageSchema const& previous_schema) const;
66 
72  void evolve(MessageSchema const& new_schema);
73 
74  EvolutionPolicy policy() const { return policy_; }
75 
78 
80  uint32_t fileIdentifier() const;
81 
82  private:
83  std::shared_ptr<std::vector<uint8_t>> schema_buffer_;
84  std::shared_ptr<flatbuffers::Parser> parser_;
86 };
87 } // namespace sol3::core
Definition: message_schema.h:12
reflection::Schema const * table() const
uint32_t fileIdentifier() const
Returns the flatbuffer file identifier, or 0 if not set.
void evolve(MessageSchema const &new_schema)
std::string fileIdentifierString() const
Returns the flatbuffer file identifier string, or empty if not set.
flatbuffers::span< uint8_t const > fromJson(std::string const &json_str)
EvolutionPolicy policy() const
Definition: message_schema.h:74
std::string conformsTo(MessageSchema const &previous_schema) const
MessageSchema(flatbuffers::span< uint8_t const > schema_buffer, EvolutionPolicy policy)
flatbuffers::span< uint8_t const > schemaBufferSpan() const
Definition: message_schema.h:30
bool verify(flatbuffers::span< uint8_t const > buffer) const
flatbuffers::Parser const & parser(JsonFormat format=JsonFormat::SINGLE_LINE) const
std::string toJson(flatbuffers::span< uint8_t const > buffer, JsonFormat format=JsonFormat::SINGLE_LINE) const
Convert a verified buffer to JSON using this schema.
bool operator==(MessageSchema const &schema) const
Tests if the schema is byte for byte equivalent to the current schema.
bool operator!=(MessageSchema const &schema) const
Definition: message_schema.h:55
EvolutionPolicy
How should this schema evolve.
Definition: message_schema.h:15
enum ArtifactFormat string
Camera/host holding the original file.
Definition: any_message_input.h:15
JsonFormat
Definition: fb_json.h:14