Skip to content

Commit be60bca

Browse files
committed
remove decode! macro and use map_decode
1 parent 804631a commit be60bca

File tree

2 files changed

+35
-36
lines changed

2 files changed

+35
-36
lines changed

src/oplog/entry.rs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
use compact_encoding::{
2-
map_encode, sum_encoded_size, take_array, take_array_mut, write_array, CompactEncoding,
3-
EncodingError,
2+
map_decode, map_encode, sum_encoded_size, take_array, take_array_mut, write_array,
3+
CompactEncoding, EncodingError,
44
};
55

6-
use crate::decode;
76
use crate::{common::BitfieldUpdate, Node};
87

98
/// Entry tree upgrade
@@ -39,7 +38,17 @@ impl CompactEncoding for EntryTreeUpgrade {
3938
where
4039
Self: Sized,
4140
{
42-
decode!(EntryTreeUpgrade, buffer, {fork: u64, ancestors: u64, length: u64, signature: Box<[u8]>})
41+
let ((fork, ancestors, length, signature), rest) =
42+
map_decode!(buffer, [u64, u64, u64, Box<[u8]>]);
43+
Ok((
44+
Self {
45+
fork,
46+
ancestors,
47+
length,
48+
signature,
49+
},
50+
rest,
51+
))
4352
}
4453
}
4554

src/oplog/header.rs

Lines changed: 22 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
use compact_encoding::{decode_usize, take_array, write_array, CompactEncoding, EncodingError};
1+
use compact_encoding::{
2+
decode_usize, map_decode, take_array, write_array, CompactEncoding, EncodingError,
3+
};
24
use compact_encoding::{map_encode, sum_encoded_size};
35
use ed25519_dalek::{SigningKey, PUBLIC_KEY_LENGTH, SECRET_KEY_LENGTH};
46

@@ -80,35 +82,6 @@ impl HeaderTree {
8082
}
8183
}
8284

83-
#[macro_export]
84-
/// Helper for decoding a struct with compact encodable
85-
macro_rules! decode {
86-
// Match the pattern: decode!(StructName, buffer, {field1: type1, field2: type2, ...})
87-
($struct_name:ident, $buffer:expr, {
88-
$($field_name:ident : $field_type:ty),* $(,)?
89-
}) => {{
90-
91-
// Variable to hold the current buffer state
92-
let mut current_buffer = $buffer;
93-
94-
// Decode each field in sequence
95-
$(
96-
let ($field_name, new_buffer) = <$field_type>::decode(current_buffer)?;
97-
current_buffer = new_buffer;
98-
)*
99-
100-
// Create the struct with decoded fields
101-
let result = $struct_name {
102-
$(
103-
$field_name,
104-
)*
105-
};
106-
107-
// Return the struct and the remaining buffer
108-
Ok((result, current_buffer))
109-
}};
110-
}
111-
11285
impl CompactEncoding for HeaderTree {
11386
fn encoded_size(&self) -> Result<usize, EncodingError> {
11487
Ok(sum_encoded_size!(
@@ -133,7 +106,17 @@ impl CompactEncoding for HeaderTree {
133106
where
134107
Self: Sized,
135108
{
136-
decode!(HeaderTree, buffer, {fork: u64, length: u64, root_hash: Box<[u8]>, signature: Box<[u8]>})
109+
let ((fork, length, root_hash, signature), rest) =
110+
map_decode!(buffer, [u64, u64, Box<[u8]>, Box<[u8]>]);
111+
Ok((
112+
Self {
113+
fork,
114+
length,
115+
root_hash,
116+
signature,
117+
},
118+
rest,
119+
))
137120
}
138121
}
139122

@@ -224,7 +207,14 @@ impl CompactEncoding for HeaderHints {
224207
where
225208
Self: Sized,
226209
{
227-
decode!(HeaderHints, buffer, {reorgs: Vec<String>, contiguous_length: u64 })
210+
let ((reorgs, contiguous_length), rest) = map_decode!(buffer, [Vec<String>, u64]);
211+
Ok((
212+
Self {
213+
reorgs,
214+
contiguous_length,
215+
},
216+
rest,
217+
))
228218
}
229219
}
230220

0 commit comments

Comments
 (0)