diff options
author | Matthew Barth <msbarth@us.ibm.com> | 2017-09-27 09:33:42 -0500 |
---|---|---|
committer | Matthew Barth <msbarth@us.ibm.com> | 2017-11-17 13:14:10 -0600 |
commit | e59fdf707514ed00fa1ab432a052de1fac07b56c (patch) | |
tree | 38ca2bc1a3e4bee8d5b1a0fbc8d2dba55024000c /control/zone.cpp | |
parent | 8fa02dabe17db9761086d77c390ceb281e2936c9 (diff) | |
download | phosphor-fan-presence-e59fdf707514ed00fa1ab432a052de1fac07b56c.tar.gz phosphor-fan-presence-e59fdf707514ed00fa1ab432a052de1fac07b56c.zip |
Set/update a service name owner for a group
Adds a service name associated with a group when the group or given
service name is not found within the map of services otherwise updates
the service name owner associated with the group.
Change-Id: I602ddaa7e06e354e01ea70d6c5c0a45e74a14e99
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
Diffstat (limited to 'control/zone.cpp')
-rw-r--r-- | control/zone.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/control/zone.cpp b/control/zone.cpp index 3d7852e..b9a7583 100644 --- a/control/zone.cpp +++ b/control/zone.cpp @@ -115,6 +115,36 @@ void Zone::setActiveAllow(const Group* group, bool isActiveAllow) } } +void Zone::setServiceOwner(const Group* group, + const std::string& name, + const bool hasOwner) +{ + try + { + auto& sNames = _services.at(*group); + auto it = std::find_if( + sNames.begin(), + sNames.end(), + [&name](auto const& entry) + { + return name == std::get<namePos>(entry); + } + ); + if (it != std::end(sNames)) + { + std::get<hasOwnerPos>(*it) = hasOwner; + } + else + { + _services[*group].emplace_back(name, hasOwner); + } + } + catch (const std::out_of_range& oore) + { + _services[*group].emplace_back(name, hasOwner); + } +} + void Zone::setFloor(uint64_t speed) { _floorSpeed = speed; |