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

Space-ng SDK: /workspaces/astro/sol3-sdk/cpp/sol3/core/message_spec.h Source File
Space-ng SDK
message_spec.h
Go to the documentation of this file.
1 // Copyright (c) Space-ng, inc. All rights reserved.
2 #pragma once
3 
6 #include "sol3/core/msg/message_header.h"
7 
8 namespace sol3::core {
9 
11 template <
12  typename TTableType,
13  msg::InterfaceType tInterfaceType,
14  uint32_t tInterfaceId>
15 struct MessageSpec {
17  using TableType = TTableType;
18 
20  using NativeTableType = typename TableType::NativeTableType;
21 
24  static msg::InterfaceType constexpr kInterfaceType = tInterfaceType;
25 
29  static uint32_t constexpr kInterfaceId = tInterfaceId;
30 
33  static uint32_t constexpr kPayloadType =
34  makeFileIdentifier<NativeTableType>();
35 
37  static MessagePort makeMessagePort(uint32_t component_id) {
38  return MessagePort(
39  component_id, kInterfaceType, kInterfaceId, kPayloadType);
40  }
41 };
42 
43 template <typename>
44 struct is_message_spec : std::false_type {};
45 
46 template <
47  typename TTableType,
48  msg::InterfaceType tInterfaceType,
49  uint32_t tInterfaceId>
50 struct is_message_spec<MessageSpec<TTableType, tInterfaceType, tInterfaceId>>
51  : std::true_type {};
52 
53 } // namespace sol3::core
Definition: message_port.h:19
InterfaceType
Definition: message_header.fbs:5
Definition: any_message_input.h:15
Compile time message type and id specification.
Definition: message_spec.h:15
static constexpr msg::InterfaceType kInterfaceType
Definition: message_spec.h:24
static constexpr uint32_t kPayloadType
Definition: message_spec.h:33
TTableType TableType
Payload flatbuffer table type.
Definition: message_spec.h:17
static MessagePort makeMessagePort(uint32_t component_id)
Construct a MessagePort from a component id.
Definition: message_spec.h:37
typename TableType::NativeTableType NativeTableType
Payload flatbuffer native table type (object api)
Definition: message_spec.h:20
static constexpr uint32_t kInterfaceId
Definition: message_spec.h:29
Definition: message_spec.h:44