blob: eb8ca648bd9863f0a362c5b1cbb26a6f6e22834f [file] [log] [blame]
#include <exception>
#include <map>
#include <sdbusplus/sdbus.hpp>
#include <sdbusplus/sdbuspp_support/server.hpp>
#include <sdbusplus/server.hpp>
#include <string>
#include <tuple>
#include <${interface.headerFile("server")}>
namespace sdbusplus::server::${interface.cppNamespace()}
{
% for m in interface.methods:
${ m.cpp_prototype(loader, interface=interface, ptype='callback-cpp') }
% endfor
% for s in interface.signals:
${ s.cpp_prototype(loader, interface=interface, ptype='callback-cpp') }
% endfor
% for p in interface.properties:
${ p.render(loader, "property.server.cpp.mako", property=p, interface=interface) }
% endfor
% if interface.properties:
void ${interface.classname}::setPropertyByName(const std::string& _name,
const PropertiesVariant& val,
bool skipSignal)
{
% for p in interface.properties:
if (_name == "${p.name}")
{
auto& v = std::get<${p.cppTypeParam(interface.name)}>(\
val);
${p.camelCase}(v, skipSignal);
return;
}
% endfor
}
auto ${interface.classname}::getPropertyByName(const std::string& _name) ->
PropertiesVariant
{
% for p in interface.properties:
if (_name == "${p.name}")
{
return ${p.camelCase}();
}
% endfor
return PropertiesVariant();
}
% endif
const vtable_t ${interface.classname}::_vtable[] = {
vtable::start(),
% for m in interface.methods:
${ m.cpp_prototype(loader, interface=interface, ptype='vtable') }
% endfor
% for s in interface.signals:
${ s.cpp_prototype(loader, interface=interface, ptype='vtable') }
% endfor
% for p in interface.properties:
vtable::property("${p.name}",
details::${interface.classname}::_property_${p.name}
.data(),
_callback_get_${p.name},
% if 'const' not in p.flags and 'readonly' not in p.flags:
_callback_set_${p.name},
% endif
% if not p.cpp_flags:
vtable::property_::emits_change),
% else:
${p.cpp_flags}),
% endif
% endfor
vtable::end()
};
} // namespace sdbusplus::server::${interface.cppNamespace()}