Skip to content

Commit e34fc03

Browse files
wbprimeElvis Wang
andauthored
Help decoding multiple messages using rust by resolving #987 (#991)
* Add new arguments for generated MessageDecoder#header method When decoding multiple messages from a single byte buffer, the second and following message decoder should offset to the new header offset plus header length. * Update code to reflect method signature change in decoder's header method * Add test for introduced changes --------- Co-authored-by: Elvis Wang <[email protected]>
1 parent 956a46b commit e34fc03

16 files changed

+112
-14
lines changed

build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -652,6 +652,7 @@ tasks.register('generateRustTestCodecs', JavaExec) {
652652
'sbe-tool/src/test/resources/issue895.xml',
653653
'sbe-tool/src/test/resources/issue972.xml',
654654
'sbe-tool/src/test/resources/issue984.xml',
655+
'sbe-tool/src/test/resources/issue987.xml',
655656
'sbe-tool/src/test/resources/example-bigendian-test-schema.xml',
656657
'sbe-tool/src/test/resources/nested-composite-name.xml',
657658
]

rust/Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ issue_435 = { path = "../generated/rust/issue435" }
1515
issue_895 = { path = "../generated/rust/issue895" }
1616
issue_972 = { path = "../generated/rust/issue972" }
1717
issue_984 = { path = "../generated/rust/issue984" }
18+
issue_987 = { path = "../generated/rust/issue987" }
1819
baseline_bigendian = { path = "../generated/rust/baseline-bigendian" }
1920
nested_composite_name = { path = "../generated/rust/nested-composite-name" }
2021

@@ -27,4 +28,4 @@ harness = false
2728

2829
[[bench]]
2930
name = "md_benchmark"
30-
harness = false
31+
harness = false

rust/benches/car_benchmark.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ fn decode(state: &State) -> SbeResult<usize> {
131131

132132
let buf = ReadBuf::new(state.buffer.as_slice());
133133
let header = MessageHeaderDecoder::default().wrap(buf, 0);
134-
car = car.header(header);
134+
car = car.header(header, 0);
135135

136136
// Car...
137137
car.serial_number();

rust/benches/md_benchmark.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ fn decode_md(state: &State) -> SbeResult<usize> {
9090

9191
let buf = ReadBuf::new(state.buffer.as_slice());
9292
let header = MessageHeaderDecoder::default().wrap(buf, 0);
93-
market_data = market_data.header(header);
93+
market_data = market_data.header(header, 0);
9494

9595
market_data.transact_time();
9696
market_data.event_time_delta();

rust/car_example_baseline_data.sbe

207 Bytes
Binary file not shown.
207 Bytes
Binary file not shown.

rust/tests/baseline_test.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ fn decode_car_and_assert_expected_content(buffer: &[u8]) -> SbeResult<()> {
4444
let buf = ReadBuf::new(buffer);
4545
let header = MessageHeaderDecoder::default().wrap(buf, 0);
4646
assert_eq!(SBE_TEMPLATE_ID, header.template_id());
47-
car = car.header(header);
47+
car = car.header(header, 0);
4848

4949
// Car...
5050
assert_eq!(1234, car.serial_number());

rust/tests/big_endian_test.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ fn decode_car_and_assert_expected_content(buffer: &[u8]) -> SbeResult<()> {
4343
let buf = ReadBuf::new(buffer);
4444
let header = MessageHeaderDecoder::default().wrap(buf, 0);
4545
assert_eq!(SBE_TEMPLATE_ID, header.template_id());
46-
car = car.header(header);
46+
car = car.header(header, 0);
4747

4848
// Car...
4949
assert_eq!(1234, car.serial_number());

rust/tests/extension_test.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ fn decode_car_and_assert_expected_content(buffer: &[u8]) -> SbeResult<()> {
4343
let buf = ReadBuf::new(buffer);
4444
let header = MessageHeaderDecoder::default().wrap(buf, 0);
4545
assert_eq!(SBE_TEMPLATE_ID, header.template_id());
46-
car = car.header(header);
46+
car = car.header(header, 0);
4747

4848
// Car...
4949
assert_eq!(1234, car.serial_number());

rust/tests/issue_435_test.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ fn issue_435_ref_test() -> SbeResult<()> {
3333
assert_eq!(SBE_SCHEMA_ID, header.schema_id());
3434
assert_eq!(*SetRef::default().set_one(true), header.s());
3535

36-
let decoder = Issue435Decoder::default().header(header);
36+
let decoder = Issue435Decoder::default().header(header, 0);
3737
assert_eq!(EnumRef::Two, decoder.example_decoder().e());
3838

3939
Ok(())

0 commit comments

Comments
 (0)