diff --git a/src/brpc/nonreflectable_message.h b/src/brpc/nonreflectable_message.h index 1494cd1b75..7f2acd78a3 100644 --- a/src/brpc/nonreflectable_message.h +++ b/src/brpc/nonreflectable_message.h @@ -223,7 +223,20 @@ class NonreflectableMessage : public ::google::protobuf::Message { struct NonreflectableMessageClassData : ClassDataFull { constexpr NonreflectableMessageClassData() : ClassDataFull( -# if GOOGLE_PROTOBUF_VERSION >= 5029000 +# if GOOGLE_PROTOBUF_VERSION >= 7034000 + ClassData{ + &_instance, // prototype + nullptr, // tc_table + nullptr, // is_initialized + nullptr, // merge_to_from + ::google::protobuf::internal::MessageCreator(), // message_creator + 0, // cached_size_offset + false, // is_lite + }, + nullptr, // descriptor_methods + nullptr, // descriptor_table + nullptr // get_metadata_tracker +# elif GOOGLE_PROTOBUF_VERSION >= 5029000 ClassData{ &_instance, // prototype nullptr, // tc_table diff --git a/src/json2pb/json_to_pb.cpp b/src/json2pb/json_to_pb.cpp index 491ab92116..c048a8b8c9 100644 --- a/src/json2pb/json_to_pb.cpp +++ b/src/json2pb/json_to_pb.cpp @@ -119,7 +119,7 @@ static void string_append_value(const BUTIL_RAPIDJSON_NAMESPACE::Value& value, //otherwise will append error into error message and return false. inline bool value_invalid(const google::protobuf::FieldDescriptor* field, const char* type, const BUTIL_RAPIDJSON_NAMESPACE::Value& value, std::string* err) { - bool optional = field->is_optional(); + bool optional = !field->is_required() && !field->is_repeated(); if (err) { if (!err->empty()) { err->append(", "); diff --git a/src/mcpack2pb/generator.cpp b/src/mcpack2pb/generator.cpp index fe47fb33fa..26aa4b5bd8 100644 --- a/src/mcpack2pb/generator.cpp +++ b/src/mcpack2pb/generator.cpp @@ -482,7 +482,7 @@ static bool generate_parsing(const google::protobuf::Descriptor* d, } break; } // switch } else { - if (f->is_optional()) { + if (!f->is_required() && !f->is_repeated()) { impl.Print("// optional $type$ $name$ = $number$;\n" , "type", field_to_string(f) , "name", f->name() @@ -888,12 +888,12 @@ static bool generate_serializing(const google::protobuf::Descriptor* d, butil::string_printf(&comment_template, "// %s $type$ $name$ = $number$;\n", (f->is_repeated() ? "repeated" : - (f->is_optional() ? "optional" : "required"))); + (f->is_required() ? "required" : "optional"))); } else { butil::string_printf(&comment_template, "// %s $type$ $name$ = $number$ [(idl_type)=%s];\n", (f->is_repeated() ? "repeated" : - (f->is_optional() ? "optional" : "required")), + (f->is_required() ? "required" : "optional")), describe_idl_type(cit)); } impl.Print(comment_template.c_str()