Add yunq support for nested messages.
This commit is contained in:
parent
7825d1861a
commit
52f530f8c1
|
@ -33,10 +33,16 @@ fn serialize_field(name: &Ident, ind: usize, path: &Path) -> proc_macro2::TokenS
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
panic!(
|
quote! {
|
||||||
"Serialization not implemented for: {}",
|
{
|
||||||
path.to_token_stream()
|
let msg_offset = next_extension;
|
||||||
)
|
let msg_length = self.#name.serialize(buf, offset + next_extension as usize, caps)? as u32;
|
||||||
|
next_extension += msg_length;
|
||||||
|
|
||||||
|
buf.write_at(yunq::message::field_offset(offset, #ind), msg_offset)?;
|
||||||
|
buf.write_at(yunq::message::field_offset(offset, #ind) + 4, msg_length)?;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,7 +68,13 @@ fn parse_field(name: &Ident, ind: usize, path: &Path) -> proc_macro2::TokenStrea
|
||||||
let #name = buf.at::<u64>(yunq::message::field_offset(offset, #ind))?;
|
let #name = buf.at::<u64>(yunq::message::field_offset(offset, #ind))?;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
panic!("Parsing not implemented for: {}", path.into_token_stream());
|
quote! {
|
||||||
|
let #name = {
|
||||||
|
let msg_offset = buf.at::<u32>(yunq::message::field_offset(offset, #ind))? as usize;
|
||||||
|
|
||||||
|
#path::parse(buf, offset + msg_offset, caps)?
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue