LambdaCodableEncoder should be less Foundation biased #66
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.
Motivation
Currently the
LambdaCodableEncoder
is based on the method signature defined byNIOFoundationCompat
. But this might not be the most efficient API.The current API looks like this:
The problem here is that the ByteBuffer has already been created with a fixed size by the
LambdaHandler
default implementation:Other encoders might be able to create a ByteBuffer of the correct size right the beginning though.
Changes
This PR changes the
LambdaCodableEncoder
protocol to hand over theByteBufferAllocator
to theLambdaCodableEncoder
instead of creating aByteBuffer
for the encoder right away. For this reason encoders can size the needed ByteBuffer correctly from the very beginning. The example from above could look like this: