@@ -40,18 +40,77 @@ struct TrackMessage {
4040 bool content_exists = false ;
4141};
4242
43+ struct PublishNamespaceOk {
44+ std::uint64_t request_id = 0 ;
45+ };
46+
47+ struct SubscribeNamespaceMessage {
48+ std::uint64_t request_id = 0 ;
49+ std::vector<std::string> track_namespace_prefix;
50+ };
51+
52+ struct SubscribeMessage {
53+ std::uint64_t request_id = 0 ;
54+ std::vector<std::string> track_namespace;
55+ std::string track_name;
56+ std::uint8_t subscriber_priority = 0 ;
57+ std::uint8_t group_order = 0 ;
58+ std::uint8_t forward = 0 ;
59+ std::uint64_t filter_type = 0 ;
60+ std::size_t start_group_id = 0 ;
61+ std::size_t start_object_id = 0 ;
62+ std::size_t end_group_id = 0 ;
63+ };
64+
65+ struct PublishNamespaceError {
66+ std::uint64_t request_id = 0 ;
67+ std::uint64_t error_code = 0 ;
68+ std::string reason;
69+ };
70+
71+ struct PublishOk {
72+ std::uint64_t request_id = 0 ;
73+ std::uint8_t forward = 0 ;
74+ std::uint8_t subscriber_priority = 0 ;
75+ std::uint8_t group_order = 0 ;
76+ std::uint64_t filter_type = 0 ;
77+ };
78+
79+ struct PublishError {
80+ std::uint64_t request_id = 0 ;
81+ std::uint64_t error_code = 0 ;
82+ std::string reason;
83+ };
84+
4385std::vector<std::uint8_t > encode_varint (std::uint64_t value);
4486bool decode_varint (std::span<const std::uint8_t > bytes, std::size_t & offset, std::uint64_t & value);
4587
4688std::vector<std::uint8_t > encode_setup_message (const SetupMessage& message);
4789bool decode_server_setup_message (std::span<const std::uint8_t > bytes, ServerSetupMessage& message);
4890std::vector<std::uint8_t > encode_server_setup_message (const ServerSetupMessage& message);
91+ bool next_control_message (std::span<const std::uint8_t > bytes, std::size_t & message_size);
4992std::vector<std::uint8_t > encode_namespace_message (const NamespaceMessage& message);
93+ bool decode_subscribe_namespace_message (std::span<const std::uint8_t > bytes, SubscribeNamespaceMessage& message);
94+ std::vector<std::uint8_t > encode_subscribe_namespace_ok_message (std::uint64_t request_id);
95+ bool decode_subscribe_message (std::span<const std::uint8_t > bytes, SubscribeMessage& message);
96+ std::vector<std::uint8_t > encode_subscribe_ok_message (std::uint64_t request_id,
97+ std::uint64_t track_alias,
98+ std::uint8_t subscriber_priority,
99+ std::size_t largest_group_id,
100+ std::size_t largest_object_id,
101+ bool content_exists);
102+ std::vector<std::uint8_t > encode_subscribe_error_message (std::uint64_t request_id,
103+ std::uint64_t error_code,
104+ std::string_view reason);
50105std::vector<std::uint8_t > encode_track_message (const TrackMessage& message);
51106std::vector<std::uint8_t > encode_publish_done_message (std::uint64_t request_id, std::uint64_t stream_count);
52107std::vector<std::uint8_t > encode_publish_namespace_done_message (const NamespaceMessage& message);
53108std::vector<std::uint8_t > encode_object_stream (std::uint64_t track_alias,
54109 const CmsfObject& object,
55110 std::span<const std::uint8_t > payload);
111+ bool decode_publish_namespace_ok (std::span<const std::uint8_t > bytes, PublishNamespaceOk& message);
112+ bool decode_publish_namespace_error (std::span<const std::uint8_t > bytes, PublishNamespaceError& message);
113+ bool decode_publish_ok (std::span<const std::uint8_t > bytes, PublishOk& message);
114+ bool decode_publish_error (std::span<const std::uint8_t > bytes, PublishError& message);
56115
57116} // namespace openmoq::publisher::transport
0 commit comments