Make stream state available for message field callbacks also during message size calculation #884
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.
This is more of a question rather than puill request.
I have simple message with arbitrarily big payload that I want to handle procedurally.
I would also like to use message field callbacks.
Unless I'm mistaken, I need to set option
callback_datatype
just to get message callbacks prototype generated even though I won't be using those pointers.After implementing
Test_callback
everything works as expected except my payload size is not known inside the callback so I need to pass it as global variable at the moment.ostream->state is only set on 2nd callback invocation (in encode mode).
Is it intentional, in ex. to tell user that it's "size calculation phase"? (so that one could just manually update bytes_written or do dummy pb_write(... NULL, size) instead of doing more sophisticated encoding)
If so, is there any way to pass user data than global variable?
One could also of course just encode message manually using encoding primitives functions, but I would prefer to use message field callbacks as much as possible (manual set callbacks are ..meh)