}
}
-int DbusProxy::Test(std::string data) const {
- auto* msg = g_dbus_message_new_method_call(BUS_NAME,
- OBJECT_PATH, INTERFACE_NAME, "Test");
+int DbusProxy::Test(std::string data) {
+ return MethodCall("Test", g_variant_new("(s)", data.c_str()));
+}
+
+int DbusProxy::Start(pid_t caller_pid) {
+ return MethodCall("Start", g_variant_new("(i)", caller_pid));
+}
+
+int DbusProxy::Stop(pid_t caller_pid) {
+ return MethodCall("Stop", g_variant_new("(i)", caller_pid));
+}
+
+int DbusProxy::MethodCall(const std::string_view method_name,
+ GVariant* parameters) {
+ auto* msg = g_dbus_message_new_method_call(
+ BUS_NAME, OBJECT_PATH, INTERFACE_NAME, method_name.data());
if (msg == nullptr) {
_E("g_dbus_message_new_method_call() is failed");
return -1;
std::unique_ptr<GDBusMessage, decltype(g_object_unref)*> msg_auto(
msg, g_object_unref);
- g_dbus_message_set_body(msg, g_variant_new("(s)", data.c_str()));
+ g_dbus_message_set_body(msg, parameters);
GError* error = nullptr;
- auto* reply = g_dbus_connection_send_message_with_reply_sync(system_conn_, msg,
- G_DBUS_SEND_MESSAGE_FLAGS_NONE, -1, nullptr, nullptr, &error);
+ auto* reply = g_dbus_connection_send_message_with_reply_sync(
+ system_conn_, msg, G_DBUS_SEND_MESSAGE_FLAGS_NONE, -1, nullptr, nullptr,
+ &error);
if (reply == nullptr || error != nullptr) {
_E("g_dbus_connection_send_message_with_reply_sync() is failed. error(%s)",
- error ? error->message : "Unknown");
+ error ? error->message : "Unknown");
g_clear_error(&error);
return -1;
}