Clarify buffer ownership for ByteStreamDriverModel #3040
Merged
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.
Change Description
TcpClientComponentImpl::send_handler
andTcpServerComponentImpl::send_handler
deallocate the providedFw::Buffer
if (and only if) they return SEND_OK or SEND_ERROR. If they return SEND_RETRY, they do not deallocate the buffer.Rationale
To make sure that users of the ByteStreamDriverInterface can implement the correct buffer handling logic, it's important to define what happens with ownership of the buffer.
Testing/Review Recommendations
N/A
Future Work
UdpComponentImpl::send_handler
does not implement the interface in the same way: notably, it also deallocates the buffer when it returns SEND_RETRY. I believe this is incorrect and has not been noticed because SEND_RETRY is unlikely (or maybe impossible) for UDP connections. Some revision to that code may be necessary.