-
Notifications
You must be signed in to change notification settings - Fork 521
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
[Rust] cumulate offset of header and message_header_codec::ENCODED_LENGTH in generated Decoder::header method #987
Comments
@wbprime just to clarify, you are suggesting that the pub fn get_limit(&self) -> usize {
self.limit + message_header_code::ENCODED_LENGTH
} and then the generated pub fn header(self, mut header: MessageHeaderDecoder<ReadBuf<'a>>) -> Self {
debug_assert_eq!(SBE_TEMPLATE_ID, header.template_id());
let acting_block_length = header.block_length();
let acting_version = header.version();
let limit = header.get_limit();
self.wrap(
header.parent().unwrap(),
limit,
acting_block_length,
acting_version,
)
} |
Yes, decoder wrap offset should be set to header offset + The generated header functions should be something like: pub fn header(self, mut header: MessageHeaderDecoder<ReadBuf<'a>>) -> Self {
debug_assert_eq!(SBE_TEMPLATE_ID, header.template_id());
let acting_block_length = header.block_length();
let acting_version = header.version();
let limit = header.get_limit();
self.wrap(
header.parent().unwrap(),
// limit,
limit + message_header_codec::ENCODED_LENGTH,
acting_block_length,
acting_version,
)
} |
1 similar comment
Yes, decoder wrap offset should be set to header offset + The generated header functions should be something like: pub fn header(self, mut header: MessageHeaderDecoder<ReadBuf<'a>>) -> Self {
debug_assert_eq!(SBE_TEMPLATE_ID, header.template_id());
let acting_block_length = header.block_length();
let acting_version = header.version();
let limit = header.get_limit();
self.wrap(
header.parent().unwrap(),
// limit,
limit + message_header_codec::ENCODED_LENGTH,
acting_block_length,
acting_version,
)
} |
Code generator for rust would generate a
header
method for Decoder (see following)The
header
method take a header decoder and callwrap
method, passingmessage_header_codec::ENCODED_LENGTH
as offset.Considering a header decoder may be wraped with a none-zero offset
header_off
,header
method should wrap withheader_off + message_header_codec::ENCODED_LENGTH
. To support this functionality, a MessageHeaderDecoder should expose its offset via, sayget_limit()
or something else.The text was updated successfully, but these errors were encountered: