fix-simple-binary-encoding
fix-simple-binary-encoding copied to clipboard
Clarify offset and length related types
Currently, offset
and message.blockLength
are specified as unsignedInt
(32-bit) while type.length
is nonNegativeInteger
which is by spec "unbounded" which I guess can be treated as "at least 64-bit". In this way offset is unable to represent the full range of potential sizes. I think:
- They should have the same type.
- Maybe it makes sense to use
unsignedLong
(64-bit) to make it more specific rather than vaguenonNegativeInteger
which doesn't impose any limitation.
You didn't specify which version of SBE you are referencing. In the latest schema for SBE v2.0 RC3, blockLength
and length
are of the same type, nonNegativeInteger
.
Oh, I checked only the Markdown version, here it still says unsingedInt
. In the XSD it's nonNegativeInteger
as you said. What do you think about offset type?
The XSD is normative. The documentation needs to be made consistent.
Oh, I checked only the Markdown version, here it still says
unsingedInt
. In the XSD it'snonNegativeInteger
as you said. What do you think about offset type?
@OleksandrKvl, thanks for catching that issue!
Just want to clarify that it's not only about documentation, the main points are that 1. offset
should have the same type as length
and 2. probably it's better not to use unbounded types anywhere in specification. For example, in Python3 there's no limit for integers which is not true for C++, can I be sure that SBE implementations in both of them are compatible?