log_dump: broadcast start/finish dbus signal 36/97636/6
authorSunmin Lee <sunm.lee@samsung.com>
Tue, 15 Nov 2016 01:27:56 +0000 (10:27 +0900)
committerSunmin Lee <sunm.lee@samsung.com>
Thu, 24 Nov 2016 07:05:32 +0000 (16:05 +0900)
log_dump offers start/finish signal so other processes can recognize
log_dump's operation in different way rather than waiting it's reply.

Change-Id: Id23f181fd820f996071da30c895896850c4c474a

src/log_dump/dbus-handler.c
src/log_dump/dbus-handler.h
src/log_dump/log_dump.c

index db87328..16274cb 100644 (file)
 #include "log_dump.h"
 #include "dbus-handler.h"
 
-#define CRASH_BUS_NAME "org.tizen.system.crash"
-#define CRASH_BUS_PATH "/Org/Tizen/System/Crash/Crash"
+/* Dbus activation */
+#define CRASH_BUS_NAME          "org.tizen.system.crash"
+#define CRASH_OBJECT_PATH       "/Org/Tizen/System/Crash/Crash"
+
+/* Log dump signal */
+#define LOG_DUMP_BUS_NAME       "org.tizen.system.logdump"
+#define LOG_DUMP_OBJECT_PATH    "/Org/Tizen/System/LogDump"
+#define LOG_DUMP_INTERFACE_NAME LOG_DUMP_BUS_NAME
+#define LOG_DUMP_START_SIGNAL   "Start"
+#define LOG_DUMP_FINISH_SIGNAL  "Finish"
 
 #define TIMEOUT_INTERVAL 30
 
@@ -122,7 +130,7 @@ static void on_bus_acquired(GDBusConnection *conn,
        guint registration_id;
 
        registration_id = g_dbus_connection_register_object(conn,
-                       CRASH_BUS_PATH, introspection_data->interfaces[0],
+                       CRASH_OBJECT_PATH, introspection_data->interfaces[0],
                        &interface_vtable, NULL, NULL, NULL);
        if (registration_id == 0)
                LOGE("Failed to g_dbus_connection_register_object");
@@ -161,7 +169,7 @@ static void dbus_init(void)
        }
 
        if (error) {
-               LOGE("Failed to get dbus");
+               LOGE("Failed to get dbus: %s", error->message);
                g_error_free(error);
                return;
        }
@@ -190,3 +198,42 @@ int log_dump_dbus(void)
 
        return 0;
 }
+
+static int broadcast_logdump(const char *signal)
+{
+       GDBusConnection *conn;
+       GError *error = NULL;
+
+       LOGI("broadcast signal: %s", signal);
+       conn = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error);
+       if (error) {
+               LOGE("Failed to get dbus: %s", error->message);
+               g_error_free(error);
+               return -1;
+       }
+
+       g_dbus_connection_emit_signal(conn,
+                                     NULL,
+                                     LOG_DUMP_OBJECT_PATH,
+                                     LOG_DUMP_INTERFACE_NAME,
+                                     signal,
+                                     NULL,
+                                     &error);
+       if (error) {
+               LOGE("Failed to emit signal: %s", error->message);
+               g_error_free(error);
+               return -1;
+       }
+
+       return 0;
+}
+
+int broadcast_logdump_start(void)
+{
+       return broadcast_logdump(LOG_DUMP_START_SIGNAL);
+}
+
+int broadcast_logdump_finish(void)
+{
+       return broadcast_logdump(LOG_DUMP_FINISH_SIGNAL);
+}
index 0d3d5d9..a936f31 100644 (file)
@@ -20,5 +20,7 @@
 #define __LOGDUMP_DBUS_H__
 
 int log_dump_dbus(void);
+int broadcast_logdump_start(void);
+int broadcast_logdump_finish(void);
 
 #endif
index 228112f..912aeef 100644 (file)
@@ -94,6 +94,8 @@ int log_dump(int option)
        time_t cur_time;
        struct tm loc_tm;
 
+       broadcast_logdump_start();
+
        /* Make debug directory */
        if (access(LOG_DUMP_DIR, F_OK) != 0) {
                ret = snprintf(command, sizeof(command),
@@ -210,6 +212,8 @@ int log_dump(int option)
                }
        }
 
+       broadcast_logdump_finish();
+
        /* Further operations for log_dump here */
 
 exit: