in hessian2/basic_codec/list_codec.cc [190:215]
bool Encoder::encode(const TypedListObject& value) {
values_ref_.emplace(&value, values_ref_.size());
auto typed_list = value.toTypedList();
ABSL_ASSERT(typed_list.has_value());
auto& typed_list_value = typed_list.value().get();
Object::TypeRef type_ref(typed_list_value.type_name_);
auto len = typed_list_value.values_.size();
if (len <= 7) {
writer_->writeByte(static_cast<uint8_t>(0x70 + len));
} else {
writer_->writeByte('V');
}
encode<Object::TypeRef>(type_ref);
if (len > 7) {
encode<int32_t>(len);
}
for (size_t i = 0; i < len; i++) {
encode<Object>(*typed_list_value.values_[i]);
}
return true;
}