1#include <exception>
2#include <map>
3#include <sdbusplus/sdbus.hpp>
4#include <sdbusplus/sdbuspp_support/server.hpp>
5#include <sdbusplus/server.hpp>
6#include <string>
7#include <tuple>
8
9#include <${interface.headerFile("server")}>
10
11namespace sdbusplus::server::${interface.cppNamespace()}
12{
13
14    % for m in interface.methods:
15${ m.cpp_prototype(loader, interface=interface, ptype='callback-cpp') }
16    % endfor
17
18    % for s in interface.signals:
19${ s.cpp_prototype(loader, interface=interface, ptype='callback-cpp') }
20    % endfor
21
22    % for p in interface.properties:
23${ p.render(loader, "property.server.cpp.mako", property=p, interface=interface) }
24    % endfor
25
26    % if interface.properties:
27void ${interface.classname}::setPropertyByName(const std::string& _name,
28                                     const PropertiesVariant& val,
29                                     bool skipSignal)
30{
31        % for p in interface.properties:
32    if (_name == "${p.name}")
33    {
34        auto& v = std::get<${p.cppTypeParam(interface.name)}>(\
35val);
36        ${p.camelCase}(v, skipSignal);
37        return;
38    }
39        % endfor
40}
41
42auto ${interface.classname}::getPropertyByName(const std::string& _name) ->
43        PropertiesVariant
44{
45    % for p in interface.properties:
46    if (_name == "${p.name}")
47    {
48        return ${p.camelCase}();
49    }
50    % endfor
51
52    return PropertiesVariant();
53}
54
55    % endif
56
57
58const vtable_t ${interface.classname}::_vtable[] = {
59    vtable::start(),
60
61    % for m in interface.methods:
62${ m.render(loader, "method.server.vtable.cpp.mako", method=m, interface=interface) }
63    % endfor
64    % for s in interface.signals:
65${ s.render(loader, "signal.server.vtable.cpp.mako", signal=s, interface=interface) }
66    % endfor
67    % for p in interface.properties:
68${ p.render(loader, "property.server.vtable.cpp.mako", property=p, interface=interface) }
69    % endfor
70    vtable::end()
71};
72
73} // namespace sdbusplus::server::${interface.cppNamespace()}
74