[C#] Added ToSizedArrayPadded(int padLeft, int padRight) to ByteBuffers to avoid unnecessary copying. #8658
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.
I've added 2 new functions to C#'s ByteBuffers:
public byte[] ToSizedArrayPadded(int padLeft, int padRight)
public T[] ToArrayPadded<T>(int pos, int len, int padLeft, int padRight)
I needed those to create byte buffers with room in front of them where i can hotwire a header containing the type info and/on package length for TCP Framing.
Code that calls .ToSizedArray only to create new byte array and yet another copy to add some padding wasn't the best approach, so I decided to add the padding feature in the library itself. This is great for highly optimized networking.
My old framing code was the bottleneck because of Buffer.BlockCopy that is after a Buffer.BlockCopy during the .ToSizedArray()
Consider adding something similar to other languages thay may need padding during their framing / similar use cases, where ToSizedArray is THE thing that creates the initial byte array.