throw std::system_error(std::error_code(), "Name lost");
}
- void on_add_user(GDBusConnection *connection, GDBusMethodInvocation *invocation, GVariant *parameters)
+ void on_add_user(GDBusConnection *connection, GDBusMethodInvocation *invocation, std::string_view sender, GVariant *parameters)
{
auto [ session_uid, subsession_id ] = tuple_from_g_variant<int, int>(parameters);
g_dbus_method_invocation_return_value(invocation, nullptr);
}
- void on_remove_user(GDBusConnection *connection, GDBusMethodInvocation *invocation, GVariant *parameters)
+ void on_remove_user(GDBusConnection *connection, GDBusMethodInvocation *invocation, std::string_view sender, GVariant *parameters)
{
auto [ session_uid, subsession_id ] = tuple_from_g_variant<int, int>(parameters);
g_dbus_method_invocation_return_value(invocation, nullptr);
}
- void on_switch_user(GDBusConnection *connection, GDBusMethodInvocation *invocation, GVariant *parameters)
+ void on_switch_user(GDBusConnection *connection, GDBusMethodInvocation *invocation, std::string_view sender, GVariant *parameters)
{
auto [ session_uid, prev_subsession_id, next_subsession_id ] = tuple_from_g_variant<int, int, int>(parameters);
if (to_call == methods.end())
throw std::system_error(std::error_code(), std::string("Unknown method ") + method_name + " called");
std::cout << "Handling " << method_name << " call from " << sender << std::endl;
- (self->*(to_call->second))(connection, invocation, parameters);
+ (self->*(to_call->second))(connection, invocation, std::string_view(sender), parameters);
} catch (const std::exception &ex) {
g_dbus_method_invocation_return_dbus_error(invocation, "org.freedesktop.DBus.Error.Failed", "Internal sessiond exception");
std::cerr << "Exception " << ex.what() << "\n" <<
constexpr static std::array<
std::pair<
std::string_view,
- void (sessiond_context::*)(GDBusConnection *, GDBusMethodInvocation *, GVariant *)
+ void (sessiond_context::*)(GDBusConnection *, GDBusMethodInvocation *, std::string_view, GVariant *)
>, 3> methods = {
std::make_pair("AddUser", &sessiond_context::on_add_user),
std::make_pair("RemoveUser", &sessiond_context::on_remove_user),