in lib/TopicName.cc [171:189]
bool TopicName::validate() {
// Check if domain matches with TopicDomain::Persistent, in future check "memory" when server is
// ready.
if (domain_.compare(TopicDomain::Persistent) != 0 && domain_.compare(TopicDomain::NonPersistent) != 0) {
return false;
}
// cluster_ can be empty
if (!isV2Topic_ && !property_.empty() && !cluster_.empty() && !namespacePortion_.empty() &&
!localName_.empty()) {
// v1 topic format
return NamedEntity::checkName(property_) && NamedEntity::checkName(cluster_) &&
NamedEntity::checkName(namespacePortion_);
} else if (isV2Topic_ && !property_.empty() && !namespacePortion_.empty() && !localName_.empty()) {
// v2 topic format
return NamedEntity::checkName(property_) && NamedEntity::checkName(namespacePortion_);
} else {
return false;
}
}