Skip to content

Commit 280f180

Browse files
committed
messages: resolve the field definition for basic types
For MessageInfo, Parameter, ParameterDefault This allows for streaming parsers to access the data immediately.
1 parent 2e28c52 commit 280f180

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

ulog_cpp/messages.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,10 @@ MessageInfo::MessageInfo(const uint8_t* msg, bool is_multi) : _is_multi(is_multi
6868
_field = Field(info->key_value_str, info->key_len);
6969
initValues(info->key_value_str + info->key_len, info->msg_size - info->key_len - 1);
7070
}
71+
if (_field.type().type != Field::BasicType::NESTED) {
72+
// For basic types we can resolve the definition immediately
73+
_field.resolveDefinition(0);
74+
}
7175
}
7276
void MessageInfo::initValues(const char* values, int len)
7377
{
@@ -468,6 +472,10 @@ ParameterDefault::ParameterDefault(const uint8_t* msg)
468472
_field = Field(param_default->key_value_str, param_default->key_len);
469473
initValues(param_default->key_value_str + param_default->key_len,
470474
param_default->msg_size - param_default->key_len - 2);
475+
if (_field.type().type != Field::BasicType::NESTED) {
476+
// For basic types we can resolve the definition immediately
477+
_field.resolveDefinition(0);
478+
}
471479
}
472480
void ParameterDefault::initValues(const char* values, int len)
473481
{

0 commit comments

Comments
 (0)