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