blob: 3f42d3cb0080c9bb5359cf80c8036c2f2a13648d [file] [log] [blame]
Matthew Barth38a93a82017-05-11 14:12:27 -05001#pragma once
2
3namespace phosphor
4{
5namespace fan
6{
7namespace control
8{
9namespace handler
10{
11
12/**
13 * @brief A handler function to set/update a property
14 * @details Sets or updates a property's value determined by a combination of
15 * an object's path and property names
16 *
17 * @param[in] path - Object's path name
Matthew Barthcec5ab72017-06-02 15:20:56 -050018 * @param[in] interface - Object's interface name
Matthew Barth38a93a82017-05-11 14:12:27 -050019 * @param[in] property - Object's property name
20 *
21 * @return Lambda function
22 * A lambda function to set/update the property value
23 */
24template <typename T>
Matthew Barthcec5ab72017-06-02 15:20:56 -050025auto setProperty(const char* path, const char* interface, const char* property)
Matthew Barth38a93a82017-05-11 14:12:27 -050026{
27 return [=](auto& zone, T&& arg)
28 {
Matthew Barthcec5ab72017-06-02 15:20:56 -050029 zone.setPropertyValue(path, interface, property, std::forward<T>(arg));
Matthew Barth38a93a82017-05-11 14:12:27 -050030 };
31}
32
Matthew Barth8fa02da2017-09-28 12:18:20 -050033/**
34 * @brief A handler function to set/update service name owner state
35 * @details Sets or updates service name owner state used by a group where
36 * a service name without an owner represents the service no longer exists
37 *
38 * @param[in] group - Group associated with a service
39 *
40 * @return Lambda function
41 * A lambda function to set/update the service name owner state
42 */
43auto setService(Group&& group)
44{
45 return [group = std::move(group)](auto& zone, auto& name, bool hasOwner)
46 {
47 // TODO Update service name owner state list of a group
48 };
49}
50
Matthew Barth38a93a82017-05-11 14:12:27 -050051} // namespace handler
52} // namespace control
53} // namespace fan
54} // namespace phosphor