return true;
}
+static void __callback_info_update_user_data(int local_id, message_port_message_cb callback, void *user_data)
+{
+ GList *callback_info_list;
+ GList *iter;
+ message_port_callback_info_s *callback_info;
+
+ callback_info_list = g_hash_table_lookup(__callback_info_hash, GUINT_TO_POINTER(local_id));
+ if (callback_info_list != NULL) {
+ for (iter = callback_info_list; iter != NULL; iter = iter->next) {
+ callback_info = (message_port_callback_info_s *)iter->data;
+ if (callback_info->local_info != NULL) {
+ callback_info->local_info->callback = callback;
+ callback_info->local_info->user_data = user_data;
+ }
+ }
+ } else {
+ _LOGE("fail to find local_id %d ", local_id);
+ }
+}
+
static bool __receive_message(GVariant *parameters, GDBusMethodInvocation *invocation)
{
char *local_port = NULL;
if (is_local_port_registed(local_port, is_trusted, &local_id, &port_info)) {
port_info->callback = callback;
port_info->user_data = user_data;
+ __callback_info_update_user_data(local_id, callback, user_data);
return local_id;
}