MCPcopy Create free account
hub / github.com/apache/brpc / end_object_internal

Method end_object_internal

src/mcpack2pb/serializer.cpp:685–714  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

683}
684
685void Serializer::end_object_internal(bool objectisoarray) {
686 if (!_stream->good()) {
687 return;
688 }
689 GroupInfo & group_info = peek_group_info();
690 if (FIELD_OBJECT != group_info.type) {
691 CHECK(false) << "end_object() is called on " << group_info;
692 return _stream->set_bad();
693 }
694 if (group_info.name_size == 0) {
695 ObjectHead objhead;
696 objhead.head.set_type(objectisoarray ? FIELD_OBJECTISOARRAY : FIELD_OBJECT);
697 objhead.head.set_name_size(0);
698 objhead.head.set_value_size(_stream->pushed_bytes() - group_info.output_offset
699 - sizeof(FieldLongHead));
700 objhead.fields_head.item_count = group_info.item_count;
701 _stream->assign(group_info.head_area, &objhead);
702 pop_group_info(_ndepth);
703 } else {
704 FieldLongHead lhead;
705 lhead.set_type(objectisoarray ? FIELD_OBJECTISOARRAY : FIELD_OBJECT);
706 lhead.set_name_size(group_info.name_size);
707 lhead.set_value_size(_stream->pushed_bytes() - group_info.output_offset
708 - group_info.name_size - sizeof(FieldLongHead));
709 _stream->assign(group_info.head_area, &lhead);
710 const ItemsHead items_head = { group_info.item_count };
711 _stream->assign(group_info.items_head_area, &items_head);
712 pop_group_info(_ndepth);
713 }
714}
715
716void Serializer::begin_array_internal(FieldType item_type, bool compack) {
717 if (!_stream->good()) {

Callers

nothing calls this directly

Calls 8

pop_group_infoFunction · 0.85
goodMethod · 0.45
set_badMethod · 0.45
set_typeMethod · 0.45
set_name_sizeMethod · 0.45
set_value_sizeMethod · 0.45
pushed_bytesMethod · 0.45
assignMethod · 0.45

Tested by

no test coverage detected