Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make 7-bit methods public #6

Open
wegylexy opened this issue Mar 2, 2021 · 5 comments
Open

Make 7-bit methods public #6

wegylexy opened this issue Mar 2, 2021 · 5 comments

Comments

@wegylexy
Copy link

wegylexy commented Mar 2, 2021

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

@ronnieoverby
Copy link
Owner

ronnieoverby commented Mar 2, 2021

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, ...)

@wegylexy
Copy link
Author

wegylexy commented Mar 3, 2021

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.

@ronnieoverby
Copy link
Owner

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.

@wegylexy
Copy link
Author

wegylexy commented Mar 3, 2021

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

@ronnieoverby
Copy link
Owner

Apparently these are new in .NET 5:

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants