e_info: add 'shutdown' option 34/142934/2
authorJunSeok, Kim <juns.kim@samsung.com>
Tue, 8 Aug 2017 02:09:28 +0000 (11:09 +0900)
committerJuyeon Lee <juyeonne.lee@samsung.com>
Tue, 8 Aug 2017 02:36:56 +0000 (02:36 +0000)
-shutdown option kill the enlightenment

usage : enlightenment_info -shutdown

Change-Id: I4c6e4196541506b9344b72a10a39947b9a08a5f4

src/bin/e_info_client.c
src/bin/e_info_server.c

index 847f45a..f432583 100755 (executable)
@@ -3961,6 +3961,44 @@ finish:
    return;
 }
 
+static void
+_e_info_client_cb_shutdown(const Eldbus_Message *msg)
+{
+   const char *errname = NULL, *errtext = NULL;
+   const char *result = NULL;
+
+   EINA_SAFETY_ON_TRUE_GOTO(eldbus_message_error_get(msg, &errname, &errtext), err);
+
+   EINA_SAFETY_ON_FALSE_GOTO(eldbus_message_arguments_get(msg, "s", &result), err);
+
+   printf("%s", result);
+   goto finish;
+
+err:
+   if(errname || errtext)
+     printf("errname : %s, errmsg : %s\n", errname, errtext);
+   else
+     printf("Error occurred in _e_info_client_cb_shutdown\n");
+
+finish:
+   return;
+}
+
+static void
+_e_info_client_proc_shutdown(int argc, char **argv)
+{
+   EINA_SAFETY_ON_FALSE_GOTO(argc == 2, usage);
+
+   _e_info_client_eldbus_message("shutdown", _e_info_client_cb_shutdown);
+   goto finish;
+
+usage :
+   printf("Usage : %s -shutdown\n\n", argv[0]);
+
+finish:
+   return;
+}
+
 static struct
 {
    const char *option;
@@ -4199,6 +4237,12 @@ static struct
       "[list], [load <module_name>], [unload <module_name>]",
       "manage modules on enlightenment",
       _e_info_client_proc_module
+   },
+   {
+      "shutdown",
+      NULL,
+      "Shutdown Enlightenment",
+      _e_info_client_proc_shutdown
    }
 };
 
index 5a32180..bd200e8 100755 (executable)
@@ -4912,6 +4912,22 @@ finish:
    return reply;
 }
 
+static Eldbus_Message *
+_e_info_server_cb_shutdown(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg)
+{
+   Eldbus_Message *reply = NULL;
+   char msg_to_client[128] = {0};
+
+   snprintf(msg_to_client, sizeof(msg_to_client), "Enlightenment will be shutdown");
+   reply = eldbus_message_method_return_new(msg);
+   eldbus_message_arguments_append(reply, "s", msg_to_client);
+
+   ecore_main_loop_quit();
+
+   return reply;
+
+}
+
 //{ "method_name", arguments_from_client, return_values_to_client, _method_cb, ELDBUS_METHOD_FLAG },
 static const Eldbus_Method methods[] = {
    { "get_window_info", NULL, ELDBUS_ARGS({"iiiisa("VALUE_TYPE_FOR_TOPVWINS")", "array of ec"}), _e_info_server_cb_window_info_get, 0 },
@@ -4969,6 +4985,7 @@ static const Eldbus_Method methods[] = {
    { "module_list_get", NULL, ELDBUS_ARGS({"ia(si)", "module list"}), _e_info_server_cb_module_list_get, 0 },
    { "module_load", ELDBUS_ARGS({"s", "target module"}), ELDBUS_ARGS({"s", "load result"}), _e_info_server_cb_module_load, 0 },
    { "module_unload", ELDBUS_ARGS({"s", "target module"}), ELDBUS_ARGS({"s", "unload result"}), _e_info_server_cb_module_unload, 0 },
+   { "shutdown", NULL, ELDBUS_ARGS({"s", "shutdown result"}), _e_info_server_cb_shutdown, 0 },
    { NULL, NULL, NULL, NULL, 0 }
 };