mmi-api-handler: adding/removing client information in connection/disconnection handler 17/264017/1
authorSung-Jin Park <sj76.park@samsung.com>
Sat, 17 Jul 2021 16:33:38 +0000 (01:33 +0900)
committerSung-Jin Park <sj76.park@samsung.com>
Mon, 13 Sep 2021 11:23:52 +0000 (20:23 +0900)
Change-Id: Iab13a1b6df6304e65435766ca094c91d16c7d442
Signed-off-by: Sung-Jin Park <sj76.park@samsung.com>
src/mmi-api-handler.c

index 1fd8494..b438371 100644 (file)
 
 #include "mmi-api-handler.h"
 #include "mmi-manager-dbg.h"
+#include "mmi-client.h"
 
+#include <stdlib.h>
 #include <rpc-port.h>
 #include <rpc-port-internal.h>
 
 static bool _init_done = false;
 
-static rpc_port_stub_mmifw_context_h _context_h = NULL;
 static const char* _stub_appid = "mmi-manager";
 
 static void _on_create(rpc_port_stub_mmifw_context_h context, void *user_data)
 {
-       LOGI("...");
+       int r;
+       char *sender = NULL;
+       mmi_client *mc =  NULL;
+
+       r = rpc_port_stub_mmifw_context_get_sender(context, &sender);
+       if (r || !sender)
+       {
+               LOGE("Failed to get sender from context ! (error:%d)\n", r);
+               goto err;
+       }
+
+       LOGI("Client(%s) has been connected !\n", sender);
+
+       mc = client_manager_client_add(sender);
+
+       if (!mc)
+       {
+               LOGE("Failed to add client info to client hash !\n");
+               goto err;
+       }
+
+       //TODO: set additional information of client
+
+       free(sender);
+       return;
+err:
+       if (sender)
+               free(sender);
+       if (mc)
+               free(mc);
 }
 
 static void _on_terminate(rpc_port_stub_mmifw_context_h context, void *user_data)
 {
-       LOGI("...");
+       int r;
+       char *sender;
+
+       r = rpc_port_stub_mmifw_context_get_sender(context, &sender);
+       if (r || !sender)
+       {
+               LOGE("Failed to get sender from context ! (error:%d)\n", r);
+               return;
+       }
+
+       LOGI("Client(%s) has been disconnected !\n", sender);
+
+       client_manager_client_remove(sender);
 }
 
 static int _register_cb(rpc_port_stub_mmifw_context_h context, rpc_port_mmifw_focus_event_cb_h focus_cb, rpc_port_mmifw_state_change_event_cb_h state_cb, rpc_port_mmifw_wakeup_event_cb_h wakeup_cb, rpc_port_mmifw_key_event_cb_h key_cb, rpc_port_mmifw_gesture_event_cb_h gesture_cb, rpc_port_mmifw_voice_event_cb_h voice_cb, rpc_port_mmifw_action_event_cb_h action_cb, rpc_port_mmifw_feedback_event_cb_h feedback_cb, void *user_data)