summaryrefslogtreecommitdiffstats
path: root/src/usr/targeting/common/target.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/targeting/common/target.C')
-rw-r--r--src/usr/targeting/common/target.C27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/usr/targeting/common/target.C b/src/usr/targeting/common/target.C
index 60134d156..6e92e53fc 100644
--- a/src/usr/targeting/common/target.C
+++ b/src/usr/targeting/common/target.C
@@ -41,6 +41,7 @@
#include <targeting/attrrp.H>
#include <targeting/common/util.H>
#include <targeting/common/trace.H>
+#include <targeting/common/predicates/predicateattrval.H>
namespace TARGETING
{
@@ -310,6 +311,32 @@ uint8_t * Target::targetFFDC( uint32_t & o_size ) const
#undef TARG_FN
}
+//******************************************************************************
+// Target::getTargetFromHuid()
+//******************************************************************************
+
+Target* Target::getTargetFromHuid(
+ const ATTR_HUID_type i_huid) const
+{
+ #define TARG_FN "getTargetFromHuid"
+ Target* l_pTarget = NULL;
+
+ TARGETING::PredicateAttrVal<TARGETING::ATTR_HUID> huidMatches(i_huid);
+
+ TARGETING::TargetRangeFilter targetsWithMatchingHuid(
+ TARGETING::targetService().begin(),
+ TARGETING::targetService().end(),
+ &huidMatches);
+ if(targetsWithMatchingHuid)
+ {
+ // Exactly one target will match the HUID, if any
+ l_pTarget = *targetsWithMatchingHuid;
+ }
+
+ return l_pTarget;
+ #undef TARG_FN
+}
+
#undef TARG_CLASS
#undef TARG_NAMESPACE
OpenPOWER on IntegriCloud