chaokunyang commented on code in PR #2704:
URL: https://github.com/apache/fory/pull/2704#discussion_r2405555345
##########
rust/fory-core/src/resolver/context.rs:
##########
@@ -91,4 +136,43 @@ impl<'de, 'bf: 'de> ReadContext<'de, 'bf> {
&self.reader.slice_after_cursor()[offset..],
))
}
+
+ pub fn read_any_typeinfo(&mut self) -> &'de Harness {
+ use crate::types::TypeId as ForyTypeId;
+
+ let fory_type_id = self.reader.read_varuint32();
+ let type_resolver = self.fory.get_type_resolver();
+
+ if fory_type_id == u32::MAX {
+ let namespace = self.meta_resolver.read_metastring(&mut
self.reader);
+ let type_name = self.meta_resolver.read_metastring(&mut
self.reader);
+ type_resolver
+ .get_name_harness(&namespace, &type_name)
+ .expect("Name harness not found")
+ } else if fory_type_id & 0xff == ForyTypeId::NAMED_STRUCT as u32 {
+ if self.fory.is_share_meta() {
+ let _meta_index = self.reader.read_varuint32();
+ } else {
+ let namespace = self.meta_resolver.read_metastring(&mut
self.reader);
+ let type_name = self.meta_resolver.read_metastring(&mut
self.reader);
+ return type_resolver
+ .get_name_harness(&namespace, &type_name)
+ .expect("Name harness not found");
+ }
+ type_resolver
+ .get_harness(fory_type_id)
+ .expect("ID harness not found")
+ } else if fory_type_id & 0xff == ForyTypeId::NAMED_COMPATIBLE_STRUCT
as u32
+ || fory_type_id & 0xff == ForyTypeId::COMPATIBLE_STRUCT as u32
+ {
+ let _meta_index = self.reader.read_varuint32();
+ type_resolver
+ .get_harness(fory_type_id)
+ .expect("ID harness not found")
+ } else {
+ type_resolver
+ .get_harness(fory_type_id)
+ .expect("ID harness not found")
Review Comment:
TODO: return Error instead of panic
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]