diff options
Diffstat (limited to 'src/usr/targeting/common/target.C')
-rw-r--r-- | src/usr/targeting/common/target.C | 27 |
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 |