15 const std::string &clientName,
16 const std::vector<std::string> &capabilities) {
19 auto versionOffset =
m_builder->CreateString(version);
20 auto clientIdOffset =
m_builder->CreateString(clientId);
21 auto clientNameOffset = clientName.empty() ? 0 :
m_builder->CreateString(clientName);
23 std::vector<flatbuffers::Offset<flatbuffers::String>> capOffsets;
24 for (
const auto &cap : capabilities) {
25 capOffsets.push_back(
m_builder->CreateString(cap));
27 auto capsVector = capabilities.empty() ? 0 :
m_builder->CreateVector(capOffsets);
32 if (!clientName.empty()) {
35 if (!capabilities.empty()) {
39 auto handshake = hsBuilder.
Finish();
46 const std::string &error) {
49 auto versionOffset =
m_builder->CreateString(version);
50 auto sessionIdOffset =
m_builder->CreateString(sessionId);
51 auto errorOffset = error.empty() ? 0 :
m_builder->CreateString(error);
61 auto ack = builder.
Finish();
69 flatbuffers::Offset<Protocol::NodeDefinition> rootOffset,
70 const std::vector<flatbuffers::Offset<Protocol::BlackboardDefinition>> &blackboards,
71 const std::vector<flatbuffers::Offset<Protocol::KeyValue>> &metadata) {
72 auto treeIdOffset =
m_builder->CreateString(treeId);
73 auto treeNameOffset = treeName.empty() ? 0 :
m_builder->CreateString(treeName);
74 auto blackboardsVector = blackboards.empty() ? 0 :
m_builder->CreateVector(blackboards);
75 auto metadataVector = metadata.empty() ? 0 :
m_builder->CreateVector(metadata);
79 if (!treeName.empty()) {
83 if (!blackboards.empty()) {
86 if (!metadata.empty()) {
90 auto init = builder.
Finish();
97 const std::string &error) {
100 auto treeIdOffset =
m_builder->CreateString(treeId);
101 auto errorOffset = error.empty() ? 0 :
m_builder->CreateString(error);
107 if (!error.empty()) {
111 auto ack = builder.
Finish();
118 float deltaTimeMs,
bool isDelta,
119 const std::vector<flatbuffers::Offset<Protocol::NodeState>> &states,
120 const std::vector<int64_t> &executionPath) {
123 auto treeIdOffset =
m_builder->CreateString(treeId);
124 auto statesVector =
m_builder->CreateVector(states);
125 auto pathVector = executionPath.empty() ? 0 :
m_builder->CreateVector(executionPath);
134 if (!executionPath.empty()) {
138 auto update = builder.
Finish();
145 const std::string &treeId,
const std::string &blackboardId, int64_t tickNumber,
146 const std::vector<flatbuffers::Offset<Protocol::BlackboardUpdateEntry>> &updates) {
149 auto treeIdOffset =
m_builder->CreateString(treeId);
150 auto bbIdOffset =
m_builder->CreateString(blackboardId);
151 auto updatesVector = updates.empty() ? 0 :
m_builder->CreateVector(updates);
157 if (!updates.empty()) {
161 auto bbUpdate = builder.
Finish();
170 auto treeIdOffset =
m_builder->CreateString(treeId);
171 auto reasonOffset = reason.empty() ? 0 :
m_builder->CreateString(reason);
176 if (!reason.empty()) {
180 auto reset = builder.
Finish();
189 auto reasonOffset = reason.empty() ? 0 :
m_builder->CreateString(reason);
190 auto messageOffset = message.empty() ? 0 :
m_builder->CreateString(message);
193 if (!reason.empty()) {
196 if (!message.empty()) {
200 auto disconnect = builder.
Finish();
209 auto messageOffset = message.empty() ? 0 :
m_builder->CreateString(message);
213 if (!message.empty()) {
218 auto error = builder.
Finish();
224flatbuffers::Offset<Protocol::NodeDefinition>
226 const std::string &name,
const std::string &description,
227 const std::vector<flatbuffers::Offset<Protocol::KeyValue>> &attributes,
228 const std::vector<flatbuffers::Offset<Protocol::NodeDefinition>> &children) {
229 auto subtypeOffset =
m_builder->CreateString(subtype);
230 auto nameOffset =
m_builder->CreateString(name);
231 auto descOffset = description.empty() ? 0 :
m_builder->CreateString(description);
232 auto attrsVector = attributes.empty() ? 0 :
m_builder->CreateVector(attributes);
233 auto childrenVector = children.empty() ? 0 :
m_builder->CreateVector(children);
240 if (!description.empty()) {
243 if (!attributes.empty()) {
246 if (!children.empty()) {
256 const std::string &message) {
257 auto messageOffset = message.empty() ? 0 :
m_builder->CreateString(message);
264 if (!message.empty()) {
272 const std::string &value) {
273 auto keyOffset =
m_builder->CreateString(key);
274 auto valueOffset = value.empty() ? 0 :
m_builder->CreateString(value);
278 if (!value.empty()) {
286 const std::string &valueType,
287 const std::string &value,
288 const std::string &description) {
289 auto keyOffset =
m_builder->CreateString(key);
290 auto typeOffset = valueType.empty() ? 0 :
m_builder->CreateString(valueType);
291 auto valueOffset = value.empty() ? 0 :
m_builder->CreateString(value);
292 auto descOffset = description.empty() ? 0 :
m_builder->CreateString(description);
296 if (!valueType.empty()) {
299 if (!value.empty()) {
302 if (!description.empty()) {
310 const std::string &
id,
const std::string &name,
311 const std::vector<flatbuffers::Offset<Protocol::BlackboardEntry>> &entries) {
312 auto idOffset =
m_builder->CreateString(
id);
313 auto nameOffset = name.empty() ? 0 :
m_builder->CreateString(name);
314 auto entriesVector = entries.empty() ? 0 :
m_builder->CreateVector(entries);
321 if (!entries.empty()) {
328flatbuffers::Offset<Protocol::BlackboardUpdateEntry>
330 const std::string &previousValue) {
331 auto keyOffset =
m_builder->CreateString(key);
332 auto valueOffset = value.empty() ? 0 :
m_builder->CreateString(value);
333 auto prevOffset = previousValue.empty() ? 0 :
m_builder->CreateString(previousValue);
337 if (!value.empty()) {
340 if (!previousValue.empty()) {
std::unique_ptr< flatbuffers::FlatBufferBuilder > m_builder
flatbuffers::Offset< Protocol::BlackboardEntry > CreateBlackboardEntry(const std::string &key, const std::string &valueType, const std::string &value, const std::string &description="")
MessageFrame BuildTreeReset(const std::string &treeId, int64_t tickNumber, const std::string &reason="")
MessageFrame BuildBlackboardUpdate(const std::string &treeId, const std::string &blackboardId, int64_t tickNumber, const std::vector< flatbuffers::Offset< Protocol::BlackboardUpdateEntry > > &updates)
flatbuffers::Offset< Protocol::BlackboardUpdateEntry > CreateBlackboardUpdateEntry(const std::string &key, const std::string &value, const std::string &previousValue)
MessageFrame BuildTickUpdate(const std::string &treeId, int64_t tickNumber, int64_t tickTimestampMs, float deltaTimeMs, bool isDelta, const std::vector< flatbuffers::Offset< Protocol::NodeState > > &states, const std::vector< int64_t > &executionPath={})
flatbuffers::Offset< Protocol::NodeDefinition > CreateNodeDefinition(int64_t id, Protocol::NodeType nodeType, const std::string &subtype, const std::string &name, const std::string &description="", const std::vector< flatbuffers::Offset< Protocol::KeyValue > > &attributes={}, const std::vector< flatbuffers::Offset< Protocol::NodeDefinition > > &children={})
MessageFrame BuildHandshake(const std::string &version, const std::string &clientId, const std::string &clientName="", const std::vector< std::string > &capabilities={})
flatbuffers::Offset< Protocol::NodeState > CreateNodeState(int64_t id, Protocol::NodeStatus status, Protocol::NodeStatus lastResult=Protocol::NodeStatus_Idle, int64_t tickCount=0, const std::string &message="")
flatbuffers::Offset< Protocol::KeyValue > CreateKeyValue(const std::string &key, const std::string &value)
MessageFrame BuildError(Protocol::ErrorCode code, const std::string &message, bool fatal=false)
MessageFrame BuildHandshakeAck(const std::string &version, const std::string &sessionId, bool accepted=true, const std::string &error="")
flatbuffers::FlatBufferBuilder & GetBuilder()
MessageFrame BuildDisconnect(const std::string &reason="", const std::string &message="")
MessageFrame BuildTreeInitAck(const std::string &treeId, bool success=true, int32_t nodeCount=0, const std::string &error="")
MessageFrame BuildTreeInit(const std::string &treeId, const std::string &treeName, flatbuffers::Offset< Protocol::NodeDefinition > rootOffset, const std::vector< flatbuffers::Offset< Protocol::BlackboardDefinition > > &blackboards={}, const std::vector< flatbuffers::Offset< Protocol::KeyValue > > &metadata={})
flatbuffers::Offset< Protocol::BlackboardDefinition > CreateBlackboardDefinition(const std::string &id, const std::string &name, const std::vector< flatbuffers::Offset< Protocol::BlackboardEntry > > &entries)
@ MessageType_TreeInitAck
@ MessageType_HandshakeAck
@ MessageType_BlackboardUpdate
void add_entries(flatbuffers::Offset< flatbuffers::Vector< flatbuffers::Offset< BlackboardEntry > > > entries)
flatbuffers::Offset< BlackboardDefinition > Finish()
void add_id(flatbuffers::Offset< flatbuffers::String > id)
void add_name(flatbuffers::Offset< flatbuffers::String > name)
void add_value(flatbuffers::Offset< flatbuffers::String > value)
flatbuffers::Offset< BlackboardEntry > Finish()
void add_key(flatbuffers::Offset< flatbuffers::String > key)
void add_description(flatbuffers::Offset< flatbuffers::String > description)
void add_value_type(flatbuffers::Offset< flatbuffers::String > value_type)
flatbuffers::Offset< BlackboardUpdate > Finish()
void add_tree_id(flatbuffers::Offset< flatbuffers::String > tree_id)
void add_updates(flatbuffers::Offset< flatbuffers::Vector< flatbuffers::Offset< BlackboardUpdateEntry > > > updates)
void add_tick_number(int64_t tick_number)
void add_blackboard_id(flatbuffers::Offset< flatbuffers::String > blackboard_id)
void add_value(flatbuffers::Offset< flatbuffers::String > value)
flatbuffers::Offset< BlackboardUpdateEntry > Finish()
void add_previous_value(flatbuffers::Offset< flatbuffers::String > previous_value)
void add_key(flatbuffers::Offset< flatbuffers::String > key)
flatbuffers::Offset< Disconnect > Finish()
void add_reason(flatbuffers::Offset< flatbuffers::String > reason)
void add_message(flatbuffers::Offset< flatbuffers::String > message)
void add_code(ErrorCode code)
flatbuffers::Offset< Error > Finish()
void add_message(flatbuffers::Offset< flatbuffers::String > message)
void add_fatal(bool fatal)
void add_accepted(bool accepted)
void add_error(flatbuffers::Offset< flatbuffers::String > error)
void add_session_id(flatbuffers::Offset< flatbuffers::String > session_id)
void add_version(flatbuffers::Offset< flatbuffers::String > version)
flatbuffers::Offset< HandshakeAck > Finish()
flatbuffers::Offset< Handshake > Finish()
void add_capabilities(flatbuffers::Offset< flatbuffers::Vector< flatbuffers::Offset< flatbuffers::String > > > capabilities)
void add_client_name(flatbuffers::Offset< flatbuffers::String > client_name)
void add_version(flatbuffers::Offset< flatbuffers::String > version)
void add_client_id(flatbuffers::Offset< flatbuffers::String > client_id)
void add_key(flatbuffers::Offset< flatbuffers::String > key)
flatbuffers::Offset< KeyValue > Finish()
void add_value(flatbuffers::Offset< flatbuffers::String > value)
void add_children(flatbuffers::Offset< flatbuffers::Vector< flatbuffers::Offset< NodeDefinition > > > children)
flatbuffers::Offset< NodeDefinition > Finish()
void add_description(flatbuffers::Offset< flatbuffers::String > description)
void add_node_type(NodeType node_type)
void add_attributes(flatbuffers::Offset< flatbuffers::Vector< flatbuffers::Offset< KeyValue > > > attributes)
void add_name(flatbuffers::Offset< flatbuffers::String > name)
void add_subtype(flatbuffers::Offset< flatbuffers::String > subtype)
void add_tick_count(int64_t tick_count)
flatbuffers::Offset< NodeState > Finish()
void add_message(flatbuffers::Offset< flatbuffers::String > message)
void add_last_result(NodeStatus last_result)
void add_status(NodeStatus status)
void add_execution_path(flatbuffers::Offset< flatbuffers::Vector< int64_t > > execution_path)
void add_tree_id(flatbuffers::Offset< flatbuffers::String > tree_id)
flatbuffers::Offset< TickUpdate > Finish()
void add_is_delta(bool is_delta)
void add_tick_number(int64_t tick_number)
void add_states(flatbuffers::Offset< flatbuffers::Vector< flatbuffers::Offset< NodeState > > > states)
void add_tick_timestamp_ms(int64_t tick_timestamp_ms)
void add_delta_time_ms(float delta_time_ms)
flatbuffers::Offset< TreeInitAck > Finish()
void add_error(flatbuffers::Offset< flatbuffers::String > error)
void add_node_count(int32_t node_count)
void add_tree_id(flatbuffers::Offset< flatbuffers::String > tree_id)
void add_success(bool success)
void add_blackboards(flatbuffers::Offset< flatbuffers::Vector< flatbuffers::Offset< BlackboardDefinition > > > blackboards)
void add_tree_id(flatbuffers::Offset< flatbuffers::String > tree_id)
void add_metadata(flatbuffers::Offset< flatbuffers::Vector< flatbuffers::Offset< KeyValue > > > metadata)
flatbuffers::Offset< TreeInit > Finish()
void add_root(flatbuffers::Offset< NodeDefinition > root)
void add_tree_name(flatbuffers::Offset< flatbuffers::String > tree_name)
flatbuffers::Offset< TreeReset > Finish()
void add_tree_id(flatbuffers::Offset< flatbuffers::String > tree_id)
void add_tick_number(int64_t tick_number)
void add_reason(flatbuffers::Offset< flatbuffers::String > reason)