AsyncBinaryReaderWriter icon indicating copy to clipboard operation
AsyncBinaryReaderWriter copied to clipboard

Make 7-bit methods public

Open wegylexy opened this issue 3 years ago • 5 comments

Why are those methods reading and writing 7-bit encoded integers protected? Also missing Int64 variants.

wegylexy avatar Mar 02 '21 19:03 wegylexy

Last time I checked this library has total feature parity with the 2 reader/writer classes found in .NET's BCL.

The 7-bit methods are used for communicating string lengths and are not intended for consumer use. The reason for 7 bit encoding is so that the fewest number of bytes can be used to represent the length of the string being transmitted. The remaining bit is dedicated to signalling whether additional bytes should be codec'd for the string length.

As for the Int64 variants, do you mean these?

ReadInt64Async

ReadUInt64Async

WriteAsync(long value, ...)

WriteAsync(ulong value, ...)

ronnieoverby avatar Mar 02 '21 22:03 ronnieoverby

I mean Read7BitEncodedInt64() and Write7BitEncodedInt64(). They are public in the BCL; may be consumed to prefix the length of a byte array or just send a small integer. I don't see why we want to restrict its usage to derived classes only.

wegylexy avatar Mar 03 '21 09:03 wegylexy

That's news to me; I doubt they were public at the time, since the entire implementation is a copy-paste-edit.

Submit a PR and I'll merge and deploy it.

ronnieoverby avatar Mar 03 '21 12:03 ronnieoverby

There are many more changes and optimizations in .NET 6 source code. I haven't studied older versions.

wegylexy avatar Mar 03 '21 12:03 wegylexy

Apparently these are new in .NET 5:

image

ronnieoverby avatar Mar 03 '21 12:03 ronnieoverby