Refactor methods in proto3's AnyMetadata implementation.

This is a small refactor to make some future changes easier.

PiperOrigin-RevId: 664879351
pull/17842/head
Tony Liao 6 months ago committed by Copybara-Service
parent f5f94f334b
commit 86a246312b
  1. 11
      src/google/protobuf/any_lite.cc

@ -30,6 +30,12 @@ std::string GetTypeUrl(absl::string_view message_name,
}
}
bool EndsWithTypeName(absl::string_view type_url, absl::string_view type_name) {
return type_url.size() > type_name.size() &&
type_url[type_url.size() - type_name.size() - 1] == '/' &&
absl::EndsWith(type_url, type_name);
}
const char kAnyFullTypeName[] = "google.protobuf.Any";
const char kTypeGoogleApisComPrefix[] = "type.googleapis.com/";
const char kTypeGoogleProdComPrefix[] = "type.googleprod.com/";
@ -50,10 +56,7 @@ bool AnyMetadata::InternalUnpackTo(absl::string_view type_name,
}
bool AnyMetadata::InternalIs(absl::string_view type_name) const {
absl::string_view type_url = type_url_->Get();
return type_url.size() >= type_name.size() + 1 &&
type_url[type_url.size() - type_name.size() - 1] == '/' &&
absl::EndsWith(type_url, type_name);
return EndsWithTypeName(type_url_->Get(), type_name);
}
bool ParseAnyTypeUrl(absl::string_view type_url, std::string* url_prefix,

Loading…
Cancel
Save