2 * Copyright (c) 2011-2015 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the License);
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an AS IS BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 #include "vc_widget_client.h"
20 #include "vc_widget_dbus.h"
23 static int g_w_waiting_time = 3000;
25 static Ecore_Fd_Handler* g_w_fd_handler = NULL;
27 static DBusConnection* g_w_conn_sender = NULL;
28 static DBusConnection* g_w_conn_listener = NULL;
30 extern int __vc_widget_cb_error(int pid, int reason);
32 extern void __vc_widget_cb_show_tooltip(int pid, bool show);
34 extern void __vc_widget_cb_result();
36 extern int __vc_widget_cb_service_state(int state);
39 static Eina_Bool widget_listener_event_callback(void* data, Ecore_Fd_Handler *fd_handler)
41 if (NULL == g_w_conn_listener) return ECORE_CALLBACK_RENEW;
43 dbus_connection_read_write_dispatch(g_w_conn_listener, 50);
46 DBusMessage* msg = NULL;
47 msg = dbus_connection_pop_message(g_w_conn_listener);
49 /* loop again if we haven't read a message */
54 SLOG(LOG_DEBUG, TAG_VCW, "[DEBUG] Message is arrived");
57 dbus_error_init(&err);
59 char if_name[64] = {0, };
60 snprintf(if_name, 64, "%s", VC_WIDGET_SERVICE_INTERFACE);
62 if (dbus_message_is_method_call(msg, if_name, VCD_WIDGET_METHOD_HELLO)) {
63 SLOG(LOG_DEBUG, TAG_VCW, "===== Get widget hello");
67 dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &pid, DBUS_TYPE_INVALID);
69 if (dbus_error_is_set(&err)) {
70 SLOG(LOG_ERROR, TAG_VCW, "[ERROR] Dbus Error (%s)", err.message);
71 dbus_error_free(&err);
75 SLOG(LOG_DEBUG, TAG_VCW, "<<<< vc widget get hello : pid(%d) ", pid);
78 SLOG(LOG_ERROR, TAG_VCW, "<<<< vc widget get hello : invalid pid ");
81 DBusMessage* reply = NULL;
82 reply = dbus_message_new_method_return(msg);
85 dbus_message_append_args(reply, DBUS_TYPE_INT32, &response, DBUS_TYPE_INVALID);
87 if (!dbus_connection_send(g_w_conn_listener, reply, NULL))
88 SLOG(LOG_ERROR, TAG_VCW, ">>>> vc widget get hello : fail to send reply");
90 SLOG(LOG_DEBUG, TAG_VCW, ">>>> vc widget get hello : result(%d)", response);
92 dbus_connection_flush(g_w_conn_listener);
93 dbus_message_unref(reply);
95 SLOG(LOG_ERROR, TAG_VCW, ">>>> vc widget get hello : fail to create reply message");
98 SLOG(LOG_DEBUG, TAG_VCW, "=====");
99 SLOG(LOG_DEBUG, TAG_VCW, " ");
100 } /* VCD_WIDGET_METHOD_HELLO */
102 else if (dbus_message_is_signal(msg, if_name, VCD_WIDGET_METHOD_SET_SERVICE_STATE)) {
105 dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &state, DBUS_TYPE_INVALID);
106 if (dbus_error_is_set(&err)) {
107 SLOG(LOG_ERROR, TAG_VCW, "[ERROR] Get arguments error (%s)", err.message);
108 dbus_error_free(&err);
111 SLOG(LOG_DEBUG, TAG_VCW, "<<<< service state changed : %d", state);
113 __vc_widget_cb_service_state(state);
115 } /* VCD_WIDGET_METHOD_SET_SERVICE_STATE */
117 else if (dbus_message_is_method_call(msg, if_name, VCD_WIDGET_METHOD_SHOW_TOOLTIP)) {
118 SLOG(LOG_DEBUG, TAG_VCW, "===== Show / Hide tooltip");
122 dbus_message_get_args(msg, &err,
123 DBUS_TYPE_INT32, &pid,
124 DBUS_TYPE_INT32, &show,
127 if (dbus_error_is_set(&err)) {
128 SLOG(LOG_ERROR, TAG_VCW, "[ERROR] Dbus Error (%s)", err.message);
129 dbus_error_free(&err);
133 SLOG(LOG_DEBUG, TAG_VCW, "<<<< vc widget show tooltip : pid(%d), show(%d)", pid, show);
135 __vc_widget_cb_show_tooltip(pid, (bool)show);
137 SLOG(LOG_ERROR, TAG_VCW, "<<<< vc widget show tooltip : invalid pid");
140 SLOG(LOG_DEBUG, TAG_VCW, "=====");
141 SLOG(LOG_DEBUG, TAG_VCW, " ");
142 } /* VCD_WIDGET_METHOD_SHOW_TOOLTIP */
144 else if (dbus_message_is_method_call(msg, if_name, VCD_WIDGET_METHOD_RESULT)) {
145 SLOG(LOG_DEBUG, TAG_VCW, "===== Get widget result");
147 __vc_widget_cb_result();
150 reply = dbus_message_new_method_return(msg);
153 if (!dbus_connection_send(g_w_conn_listener, reply, NULL))
154 SLOG(LOG_ERROR, TAG_VCW, ">>>> vc widget get result : fail to send reply");
156 SLOG(LOG_DEBUG, TAG_VCW, ">>>> vc widget get result");
158 dbus_connection_flush(g_w_conn_listener);
159 dbus_message_unref(reply);
161 SLOG(LOG_ERROR, TAG_VCW, ">>>> vc widget get result : fail to create reply message");
165 SLOG(LOG_DEBUG, TAG_VCW, "=====");
166 SLOG(LOG_DEBUG, TAG_VCW, " ");
168 } /* VCD_WIDGET_METHOD_RESULT */
170 else if (dbus_message_is_method_call(msg, if_name, VCD_WIDGET_METHOD_ERROR)) {
171 SLOG(LOG_DEBUG, TAG_VCW, "===== Get widget error");
176 dbus_message_get_args(msg, &err,
177 DBUS_TYPE_INT32, &pid,
178 DBUS_TYPE_INT32, &reason,
179 DBUS_TYPE_STRING, &err_msg,
182 if (dbus_error_is_set(&err)) {
183 SLOG(LOG_ERROR, TAG_VCW, "<<<< vc widget get error message : Get arguments error (%s)", err.message);
184 dbus_error_free(&err);
186 SLOG(LOG_DEBUG, TAG_VCW, "<<<< vc widget get error message : pid(%d), reason(%d), msg(%s)", pid, reason, err_msg);
187 __vc_widget_cb_error(pid, reason);
191 reply = dbus_message_new_method_return(msg);
194 if (!dbus_connection_send(g_w_conn_listener, reply, NULL))
195 SLOG(LOG_ERROR, TAG_VCW, ">>>> vc widget error message : fail to send reply");
197 SLOG(LOG_DEBUG, TAG_VCW, ">>>> vc widget error message");
199 dbus_connection_flush(g_w_conn_listener);
200 dbus_message_unref(reply);
202 SLOG(LOG_ERROR, TAG_VCW, ">>>> vc widget error message : fail to create reply message");
206 SLOG(LOG_DEBUG, TAG_VCW, "=====");
207 SLOG(LOG_DEBUG, TAG_VCW, " ");
208 } /* VCD_WIDGET_METHOD_ERROR */
211 SLOG(LOG_ERROR, TAG_VCW, "Message is NOT valid");
212 dbus_message_unref(msg);
216 /* free the message */
217 dbus_message_unref(msg);
220 return ECORE_CALLBACK_PASS_ON;
223 int vc_widget_dbus_open_connection()
225 if (NULL != g_w_conn_sender && NULL != g_w_conn_listener) {
226 SLOG(LOG_WARN, TAG_VCW, "Already existed connection ");
233 /* initialise the error value */
234 dbus_error_init(&err);
236 /* connect to the DBUS system bus, and check for errors */
237 g_w_conn_sender = dbus_bus_get_private(DBUS_BUS_SYSTEM, &err);
239 if (dbus_error_is_set(&err)) {
240 SLOG(LOG_ERROR, TAG_VCW, "Dbus Connection Error (%s)", err.message);
241 dbus_error_free(&err);
244 if (NULL == g_w_conn_sender) {
245 SLOG(LOG_ERROR, TAG_VCW, "Fail to get dbus connection ");
246 return VC_ERROR_OPERATION_FAILED;
249 g_w_conn_listener = dbus_bus_get_private(DBUS_BUS_SYSTEM, &err);
251 if (dbus_error_is_set(&err)) {
252 SLOG(LOG_ERROR, TAG_VCW, "Dbus Connection Error (%s)", err.message);
253 dbus_error_free(&err);
256 if (NULL == g_w_conn_listener) {
257 SLOG(LOG_ERROR, TAG_VCW, "Fail to get dbus connection ");
258 return VC_ERROR_OPERATION_FAILED;
261 SLOG(LOG_DEBUG, TAG_VCW, "service name is %s", VC_WIDGET_SERVICE_NAME);
263 /* register our name on the bus, and check for errors */
264 ret = dbus_bus_request_name(g_w_conn_listener, VC_WIDGET_SERVICE_NAME, DBUS_NAME_FLAG_REPLACE_EXISTING , &err);
266 if (dbus_error_is_set(&err)) {
267 SLOG(LOG_ERROR, TAG_VCW, "Name Error (%s)", err.message);
268 dbus_error_free(&err);
271 if (DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER != ret) {
272 SLOG(LOG_ERROR, TAG_VCW, "fail dbus_bus_request_name()");
276 if (NULL != g_w_fd_handler) {
277 SLOG(LOG_WARN, TAG_VCW, "The handler already exists.");
281 char rule[128] = {0, };
282 snprintf(rule, 128, "type='signal',interface='%s'", VC_WIDGET_SERVICE_INTERFACE);
284 /* add a rule for which messages we want to see */
285 dbus_bus_add_match(g_w_conn_listener, rule, &err);
286 dbus_connection_flush(g_w_conn_listener);
288 if (dbus_error_is_set(&err)) {
289 SLOG(LOG_ERROR, TAG_VCW, "Match Error (%s)", err.message);
290 dbus_error_free(&err);
291 return VC_ERROR_OPERATION_FAILED;
295 if (1 != dbus_connection_get_unix_fd(g_w_conn_listener, &fd)) {
296 SLOG(LOG_ERROR, TAG_VCW, "fail to get fd from dbus ");
297 return VC_ERROR_OPERATION_FAILED;
299 SLOG(LOG_DEBUG, TAG_VCW, "Get fd from dbus : %d", fd);
302 g_w_fd_handler = ecore_main_fd_handler_add(fd, ECORE_FD_READ, (Ecore_Fd_Cb)widget_listener_event_callback, g_w_conn_listener, NULL, NULL);
304 if (NULL == g_w_fd_handler) {
305 SLOG(LOG_ERROR, TAG_VCW, "fail to get fd handler from ecore ");
306 return VC_ERROR_OPERATION_FAILED;
312 int vc_widget_dbus_close_connection()
315 dbus_error_init(&err);
317 if (NULL != g_w_fd_handler) {
318 ecore_main_fd_handler_del(g_w_fd_handler);
319 g_w_fd_handler = NULL;
322 dbus_bus_release_name(g_w_conn_listener, VC_WIDGET_SERVICE_NAME, &err);
324 if (dbus_error_is_set(&err)) {
325 SLOG(LOG_ERROR, TAG_VCW, "[ERROR] Dbus Error (%s)", err.message);
326 dbus_error_free(&err);
329 g_w_conn_sender = NULL;
330 g_w_conn_listener = NULL;
335 int vc_widget_dbus_reconnect()
337 bool sender_connected = dbus_connection_get_is_connected(g_w_conn_sender);
338 bool listener_connected = dbus_connection_get_is_connected(g_w_conn_listener);
339 SLOG(LOG_DEBUG, TAG_VCW, "[DBUS] Sender(%s) Listener(%s)",
340 sender_connected ? "Connected" : "Not connected", listener_connected ? "Connected" : "Not connected");
342 if (false == sender_connected || false == listener_connected) {
343 vc_widget_dbus_close_connection();
345 if (0 != vc_widget_dbus_open_connection()) {
346 SLOG(LOG_ERROR, TAG_VCW, "[ERROR] Fail to reconnect");
350 SLOG(LOG_DEBUG, TAG_VCW, "[DBUS] Reconnect");
356 int vc_widget_dbus_request_hello()
360 msg = dbus_message_new_method_call(
361 VC_SERVER_SERVICE_NAME,
362 VC_SERVER_SERVICE_OBJECT_PATH,
363 VC_SERVER_SERVICE_INTERFACE,
367 SLOG(LOG_ERROR, TAG_VCW, ">>>> Request vc hello : Fail to make message");
368 return VC_ERROR_OPERATION_FAILED;
372 dbus_error_init(&err);
374 DBusMessage* result_msg = NULL;
377 result_msg = dbus_connection_send_with_reply_and_block(g_w_conn_sender, msg, 500, &err);
379 if (dbus_error_is_set(&err)) {
380 dbus_error_free(&err);
383 dbus_message_unref(msg);
385 if (NULL != result_msg) {
386 dbus_message_unref(result_msg);
389 result = VC_ERROR_TIMED_OUT;
396 int vc_widget_dbus_request_initialize(int pid, int* service_state)
400 msg = dbus_message_new_method_call(
401 VC_SERVER_SERVICE_NAME,
402 VC_SERVER_SERVICE_OBJECT_PATH,
403 VC_SERVER_SERVICE_INTERFACE,
404 VC_WIDGET_METHOD_INITIALIZE);
407 SLOG(LOG_ERROR, TAG_VCW, ">>>> vc widget initialize : Fail to make message ");
408 return VC_ERROR_OPERATION_FAILED;
410 SLOG(LOG_DEBUG, TAG_VCW, ">>>> vc widget initialize : pid(%d)", pid);
413 dbus_message_append_args(msg,
414 DBUS_TYPE_INT32, &pid,
418 dbus_error_init(&err);
420 DBusMessage* result_msg;
421 int result = VC_ERROR_OPERATION_FAILED;
423 result_msg = dbus_connection_send_with_reply_and_block(g_w_conn_sender, msg, g_w_waiting_time, &err);
424 dbus_message_unref(msg);
426 if (dbus_error_is_set(&err)) {
427 SLOG(LOG_ERROR, TAG_VCW, "[ERROR] Dbus Error (%s)", err.message);
428 dbus_error_free(&err);
431 if (NULL != result_msg) {
432 int tmp_service_state = 0;
433 dbus_message_get_args(result_msg, &err,
434 DBUS_TYPE_INT32, &result,
435 DBUS_TYPE_INT32, &tmp_service_state,
438 if (dbus_error_is_set(&err)) {
439 SLOG(LOG_ERROR, TAG_VCW, "<<<< Get arguments error (%s)", err.message);
440 dbus_error_free(&err);
441 result = VC_ERROR_OPERATION_FAILED;
444 dbus_message_unref(result_msg);
447 *service_state = tmp_service_state;
448 SLOG(LOG_DEBUG, TAG_VCW, "<<<< vc widget initialize : result = %d service = %d", result, *service_state);
450 SLOG(LOG_ERROR, TAG_VCW, "<<<< vc widget initialize : result = %d", result);
453 SLOG(LOG_ERROR, TAG_VCW, "<<<< Result message is NULL ");
454 vc_widget_dbus_reconnect();
455 result = VC_ERROR_TIMED_OUT;
461 int vc_widget_dbus_request_finalize(int pid)
465 msg = dbus_message_new_method_call(
466 VC_SERVER_SERVICE_NAME,
467 VC_SERVER_SERVICE_OBJECT_PATH,
468 VC_SERVER_SERVICE_INTERFACE,
469 VC_WIDGET_METHOD_FINALIZE);
472 SLOG(LOG_ERROR, TAG_VCW, ">>>> vc widget finalize : Fail to make message ");
473 return VC_ERROR_OPERATION_FAILED;
475 SLOG(LOG_DEBUG, TAG_VCW, ">>>> vc widget finalize : pid(%d)", pid);
478 dbus_message_append_args(msg, DBUS_TYPE_INT32, &pid, DBUS_TYPE_INVALID);
481 dbus_error_init(&err);
483 DBusMessage* result_msg;
484 int result = VC_ERROR_OPERATION_FAILED;
486 result_msg = dbus_connection_send_with_reply_and_block(g_w_conn_sender, msg, g_w_waiting_time, &err);
487 dbus_message_unref(msg);
489 if (dbus_error_is_set(&err)) {
490 SLOG(LOG_ERROR, TAG_VCW, "[ERROR] Dbus Error (%s)", err.message);
491 dbus_error_free(&err);
494 if (NULL != result_msg) {
495 dbus_message_get_args(result_msg, &err,
496 DBUS_TYPE_INT32, &result,
499 if (dbus_error_is_set(&err)) {
500 SLOG(LOG_ERROR, TAG_VCW, "<<<< Get arguments error (%s)", err.message);
501 dbus_error_free(&err);
502 result = VC_ERROR_OPERATION_FAILED;
505 dbus_message_unref(result_msg);
508 SLOG(LOG_DEBUG, TAG_VCW, "<<<< vc widget finalize : result = %d", result);
510 SLOG(LOG_ERROR, TAG_VCW, "<<<< vc widget finalize : result = %d", result);
513 SLOG(LOG_ERROR, TAG_VCW, "<<<< Result message is NULL ");
514 vc_widget_dbus_reconnect();
515 result = VC_ERROR_TIMED_OUT;
521 int vc_widget_dbus_request_start_recording(int pid, bool command)
525 msg = dbus_message_new_method_call(
526 VC_SERVER_SERVICE_NAME,
527 VC_SERVER_SERVICE_OBJECT_PATH,
528 VC_SERVER_SERVICE_INTERFACE,
529 VC_WIDGET_METHOD_START_RECORDING);
532 SLOG(LOG_ERROR, TAG_VCW, ">>>> vc widget start recording : Fail to make message");
533 return VC_ERROR_OPERATION_FAILED;
535 SLOG(LOG_DEBUG, TAG_VCW, ">>>> vc widget start recording : pid(%d)", pid);
538 int temp = (int)command;
540 dbus_message_append_args(msg,
541 DBUS_TYPE_INT32, &pid,
542 DBUS_TYPE_INT32, &temp,
546 dbus_error_init(&err);
548 DBusMessage* result_msg;
549 int result = VC_ERROR_OPERATION_FAILED;
551 result_msg = dbus_connection_send_with_reply_and_block(g_w_conn_sender, msg, g_w_waiting_time, &err);
552 dbus_message_unref(msg);
554 if (dbus_error_is_set(&err)) {
555 SLOG(LOG_ERROR, TAG_VCW, "[ERROR] Dbus Error (%s)", err.message);
556 dbus_error_free(&err);
559 if (NULL != result_msg) {
560 dbus_message_get_args(result_msg, &err, DBUS_TYPE_INT32, &result, DBUS_TYPE_INVALID);
562 if (dbus_error_is_set(&err)) {
563 SLOG(LOG_ERROR, TAG_VCW, "<<<< Get arguments error (%s)", err.message);
564 dbus_error_free(&err);
565 result = VC_ERROR_OPERATION_FAILED;
567 dbus_message_unref(result_msg);
570 SLOG(LOG_DEBUG, TAG_VCW, "<<<< vc widget start recording : result = %d", result);
572 SLOG(LOG_ERROR, TAG_VCW, "<<<< vc widget start recording : result = %d", result);
575 SLOG(LOG_ERROR, TAG_VCW, "<<<< Result message is NULL");
576 vc_widget_dbus_reconnect();
577 result = VC_ERROR_TIMED_OUT;
583 int vc_widget_dbus_request_start(int pid, int silence)
587 /* create a signal & check for errors */
588 msg = dbus_message_new_method_call(
589 VC_SERVER_SERVICE_NAME,
590 VC_SERVER_SERVICE_OBJECT_PATH,
591 VC_SERVER_SERVICE_INTERFACE,
592 VC_WIDGET_METHOD_START);
595 SLOG(LOG_ERROR, TAG_VCW, ">>>> vc widget start : Fail to make message ");
596 return VC_ERROR_OPERATION_FAILED;
598 SLOG(LOG_DEBUG, TAG_VCW, ">>>> vc widget start : pid(%d), silence(%d)", pid, silence);
601 DBusMessageIter args;
602 dbus_message_iter_init_append(msg, &args);
605 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(pid));
606 dbus_message_iter_append_basic(&args, DBUS_TYPE_INT32, &(silence));
609 dbus_error_init(&err);
611 DBusMessage* result_msg;
612 int result = VC_ERROR_OPERATION_FAILED;
614 result_msg = dbus_connection_send_with_reply_and_block(g_w_conn_sender, msg, g_w_waiting_time, &err);
615 dbus_message_unref(msg);
617 if (dbus_error_is_set(&err)) {
618 SLOG(LOG_ERROR, TAG_VCW, "[ERROR] Dbus Error (%s)", err.message);
619 dbus_error_free(&err);
622 if (NULL != result_msg) {
623 dbus_message_get_args(result_msg, &err,
624 DBUS_TYPE_INT32, &result,
627 if (dbus_error_is_set(&err)) {
628 SLOG(LOG_ERROR, TAG_VCW, "<<<< Get arguments error (%s)", err.message);
629 dbus_error_free(&err);
630 result = VC_ERROR_OPERATION_FAILED;
632 dbus_message_unref(result_msg);
635 SLOG(LOG_DEBUG, TAG_VCW, "<<<< vc widget start : result = %d", result);
637 SLOG(LOG_ERROR, TAG_VCW, "<<<< vc widget start : result = %d", result);
640 SLOG(LOG_DEBUG, TAG_VCW, "<<<< Result Message is NULL");
641 vc_widget_dbus_reconnect();
642 result = VC_ERROR_TIMED_OUT;
648 int vc_widget_dbus_request_stop(int pid)
652 /* create a signal & check for errors */
653 msg = dbus_message_new_method_call(
654 VC_SERVER_SERVICE_NAME,
655 VC_SERVER_SERVICE_OBJECT_PATH,
656 VC_SERVER_SERVICE_INTERFACE,
657 VC_WIDGET_METHOD_STOP);
660 SLOG(LOG_ERROR, TAG_VCW, ">>>> vc widget stop : Fail to make message ");
661 return VC_ERROR_OPERATION_FAILED;
663 SLOG(LOG_DEBUG, TAG_VCW, ">>>> vc widget stop : pid(%d)", pid);
666 dbus_message_append_args(msg,
667 DBUS_TYPE_INT32, &pid,
671 dbus_error_init(&err);
673 DBusMessage* result_msg;
674 int result = VC_ERROR_OPERATION_FAILED;
676 result_msg = dbus_connection_send_with_reply_and_block(g_w_conn_sender, msg, g_w_waiting_time, &err);
677 dbus_message_unref(msg);
679 if (dbus_error_is_set(&err)) {
680 SLOG(LOG_ERROR, TAG_VCW, "[ERROR] Dbus Error (%s)", err.message);
681 dbus_error_free(&err);
684 if (NULL != result_msg) {
685 dbus_message_get_args(result_msg, &err,
686 DBUS_TYPE_INT32, &result,
689 if (dbus_error_is_set(&err)) {
690 SLOG(LOG_ERROR, TAG_VCW, "<<<< Get arguments error (%s)", err.message);
691 dbus_error_free(&err);
692 result = VC_ERROR_OPERATION_FAILED;
694 dbus_message_unref(result_msg);
697 SLOG(LOG_DEBUG, TAG_VCW, "<<<< vc widget stop : result = %d", result);
699 SLOG(LOG_ERROR, TAG_VCW, "<<<< vc widget stop : result = %d", result);
702 SLOG(LOG_DEBUG, TAG_VCW, "<<<< Result Message is NULL");
703 vc_widget_dbus_reconnect();
704 result = VC_ERROR_TIMED_OUT;
710 int vc_widget_dbus_request_cancel(int pid)
714 /* create a signal & check for errors */
715 msg = dbus_message_new_method_call(
716 VC_SERVER_SERVICE_NAME,
717 VC_SERVER_SERVICE_OBJECT_PATH, /* object name of the signal */
718 VC_SERVER_SERVICE_INTERFACE, /* interface name of the signal */
719 VC_WIDGET_METHOD_CANCEL); /* name of the signal */
722 SLOG(LOG_ERROR, TAG_VCW, ">>>> vc widget cancel : Fail to make message ");
723 return VC_ERROR_OPERATION_FAILED;
725 SLOG(LOG_DEBUG, TAG_VCW, ">>>> vc widget cancel : pid(%d)", pid);
728 dbus_message_append_args(msg,
729 DBUS_TYPE_INT32, &pid,
733 dbus_error_init(&err);
735 DBusMessage* result_msg;
736 int result = VC_ERROR_OPERATION_FAILED;
738 result_msg = dbus_connection_send_with_reply_and_block(g_w_conn_sender, msg, g_w_waiting_time, &err);
739 dbus_message_unref(msg);
741 if (dbus_error_is_set(&err)) {
742 SLOG(LOG_ERROR, TAG_VCW, "[ERROR] Dbus Error (%s)", err.message);
743 dbus_error_free(&err);
746 if (NULL != result_msg) {
747 dbus_message_get_args(result_msg, &err,
748 DBUS_TYPE_INT32, &result,
751 if (dbus_error_is_set(&err)) {
752 SLOG(LOG_ERROR, TAG_VCW, "<<<< Get arguments error (%s)", err.message);
753 dbus_error_free(&err);
754 result = VC_ERROR_OPERATION_FAILED;
756 dbus_message_unref(result_msg);
759 SLOG(LOG_DEBUG, TAG_VCW, "<<<< vc widget cancel : result = %d", result);
761 SLOG(LOG_ERROR, TAG_VCW, "<<<< vc widget cancel : result = %d", result);
764 SLOG(LOG_DEBUG, TAG_VCW, "<<<< Result Message is NULL");
765 vc_widget_dbus_reconnect();
766 result = VC_ERROR_TIMED_OUT;