parser: refactor value dictionary update logic #1072
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Main Changes:
SignalValue
struct and thequery_latest()
function. These were previously used to copy updated values to Cython code and initializing the value dictionary in Cython's__init__
method when query_latest() was called with empty CAN strings.MessageState
to Cython code, enabling direct access to values fromMessageState
after an update.current_nanos
.These changes significantly simplify the update logic, improve performance, and eliminate issues related to the problematic
last_nanos
andcurrent_nanos
in query_latest(). This refactor fixes multiple issues, including:Remaining Tasks for Issue 1066 (will be resolved in another PR):
- Ensure the
vals
in MessageState are always the newest.- Ensure
all_vals
are sorted by received time.