FqInstance::setTo accepts more formats.
FqInstance::setTo() by components allow interface
and instance names to be empty.
Test: run_all_host_tests
Bug: 73774955
Change-Id: I127c8856b8cb741fd11b2105d14b11854788afb4
diff --git a/utils/FqInstance.cpp b/utils/FqInstance.cpp
index 0b2b8f8..4689aae 100644
--- a/utils/FqInstance.cpp
+++ b/utils/FqInstance.cpp
@@ -62,11 +62,7 @@
return !mInstance.empty();
}
-bool FqInstance::setTo(const std::string& s) {
- auto pos = s.find(INSTANCE_SEP);
- if (!mFqName.setTo(s.substr(0, pos))) return false;
- mInstance = pos == std::string::npos ? std::string{} : s.substr(pos + 1);
-
+bool FqInstance::isValid() const {
bool hasPkg = hasPackage();
bool hasVer = hasVersion();
bool hasIntf = hasInterface();
@@ -91,12 +87,19 @@
return !hasInst;
}
+bool FqInstance::setTo(const std::string& s) {
+ auto pos = s.find(INSTANCE_SEP);
+ if (!mFqName.setTo(s.substr(0, pos))) return false;
+ mInstance = pos == std::string::npos ? std::string{} : s.substr(pos + 1);
+
+ return isValid();
+}
+
bool FqInstance::setTo(const std::string& package, size_t majorVer, size_t minorVer,
const std::string& interface, const std::string& instance) {
- std::stringstream ss;
- ss << package << "@" << majorVer << "." << minorVer << "::" << interface << INSTANCE_SEP
- << instance;
- return setTo(ss.str());
+ if (!mFqName.setTo(package, majorVer, minorVer, interface)) return false;
+ mInstance = instance;
+ return isValid();
}
bool FqInstance::setTo(size_t majorVer, size_t minorVer, const std::string& interface,
@@ -105,7 +108,7 @@
}
bool FqInstance::setTo(const std::string& interface, const std::string& instance) {
- return setTo(interface + INSTANCE_SEP + instance);
+ return setTo(0u, 0u, interface, instance);
}
std::string FqInstance::string() const {