In iterators, allocate new msg for each Receive #350
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.
Currently, iterator-style streams re-use the same memory for each
received message. This is a satisfying little efficiency, but it's very
likely to cause confusion among users - they'll retain a reference to a
message, call
Receive()
again, and wonder why the retained referencehas changed out from under them. We should anticipate this confusion and
allocate for each
Receive
. As a nice side effect, this makesvtprotobuf
Codecs behave properly by default - no need to explicitlyreset messages.
This PR also adds a
Conn()
method to each stream that exposes theunderlying connection. This lets users who want a different high-level
stream API write their own wrapper types: perhaps they'd like to avoid
allocations more aggressively, or they want every stream constructor to
also require an auth token.
Fixes #345.