Skip to content

Commit 78fff04

Browse files
implemented map encoding
1 parent 039114d commit 78fff04

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

amqp-type/src/collection.rs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,21 @@ impl Encode for List {
3434

3535
impl Encode for Map {
3636
fn encode(&self) -> Encoded {
37-
todo!()
37+
let mut res: Vec<Encoded> = Vec::new();
38+
let mut data_len = 0;
39+
let mut count = 0;
40+
for (key, value) in &self.0 {
41+
let k = key.encode();
42+
let v = value.encode();
43+
data_len += k.data_len() + v.data_len();
44+
res.push(k);
45+
res.push(v);
46+
count += 2;
47+
}
48+
match data_len {
49+
x if x <= 255 => Encoded::new_compound(0xc1, count, EncodedVec(res).into()),
50+
_ => Encoded::new_compound(0xd1, count, EncodedVec(res).into())
51+
}
3852
}
3953
}
4054

0 commit comments

Comments
 (0)