Separate benchmark tool from rpc-port
[platform/core/appfw/rpc-port.git] / benchmark / tool / dbus-proxy.cc
index 82f5b23..94cd878 100644 (file)
@@ -44,9 +44,22 @@ void DbusProxy::Connect() {
   }
 }
 
-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;
@@ -54,13 +67,14 @@ int DbusProxy::Test(std::string data) const {
   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;
   }