4 * Copyright (c) 2012 - 2013 Samsung Electronics Co., Ltd. All rights reserved.
\r
6 * Contact: Kyuho Jo <kyuho.jo@samsung.com>, Sunghyun Kwon <sh0701.kwon@samsung.com>
\r
8 * Licensed under the Apache License, Version 2.0 (the "License");
\r
9 * you may not use this file except in compliance with the License.
\r
10 * You may obtain a copy of the License at
\r
12 * http://www.apache.org/licenses/LICENSE-2.0
\r
14 * Unless required by applicable law or agreed to in writing, software
\r
15 * distributed under the License is distributed on an "AS IS" BASIS,
\r
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
17 * See the License for the specific language governing permissions and
\r
18 * limitations under the License.
\r
23 #include <pthread.h>
\r
24 #include <dbus/dbus-glib.h>
\r
25 #include <dbus/dbus-glib-bindings.h>
\r
26 #include <sys/utsname.h>
\r
27 #include "email-types.h"
\r
28 #include "email-debug-log.h"
\r
29 #include "email-dbus-activation.h"
\r
30 #include "email-service-binding.h"
\r
31 #include "email-service-glue.h"
\r
34 GMainLoop *loop = NULL;
\r
35 GObject *object = NULL;
\r
36 DBusGConnection *connection = NULL;
\r
38 static pid_t launch_by_client = 0;
\r
40 void __net_nfc_discovery_polling_cb(int signo);
\r
41 bool Check_Redwood();
\r
43 G_DEFINE_TYPE(EmailService, email_service, G_TYPE_OBJECT)
\r
45 #define __G_ASSERT(test, return_val, error, domain, error_code)\
\r
48 if G_LIKELY (!(test)) { \
\r
49 g_set_error (error, domain, error_code, #test); \
\r
50 return (return_val); \
\r
56 static void email_service_init(EmailService *email_service)
\r
58 EM_DEBUG_LOG("email_service_init entered");
\r
61 GQuark email_service_error_quark(void)
\r
63 EM_DEBUG_LOG("email_service_error_quark entered");
\r
64 return g_quark_from_static_string("email_service_error");
\r
68 static void email_service_class_init(EmailServiceClass *email_service_class)
\r
70 EM_DEBUG_LOG("email_service_class_init entered");
\r
73 dbus_g_object_type_install_info(EMAIL_SERVICE_TYPE, &dbus_glib_nfc_service_object_info);
\r
77 EXPORT_API int emipc_launch_email_service()
\r
79 EM_DEBUG_FUNC_BEGIN();
\r
80 int err = EMAIL_ERROR_NONE;
\r
83 DBusGConnection *connection = NULL;
\r
84 DBusGProxy *proxy = NULL;
\r
85 GError *error = NULL;
\r
86 guint dbus_result = 0;
\r
88 //if(!g_thread_supported()) {
\r
89 // g_thread_init(NULL);
\r
92 //dbus_g_thread_init();
\r
96 //pthread_mutex_lock(&g_client_context.g_client_lock);
\r
98 connection = dbus_g_bus_get(DBUS_BUS_SYSTEM, &error);
\r
99 if (error == NULL) {
\r
100 proxy = dbus_g_proxy_new_for_name(connection, EMAIL_SERVICE_NAME, EMAIL_SERVICE_PATH, EMAIL_SERVICE_NAME);
\r
102 if (proxy != NULL) {
\r
103 if (org_tizen_email_service_launch(proxy, &dbus_result, &error) == false) {
\r
104 EM_DEBUG_EXCEPTION("email_service_launch failed");
\r
105 if (error != NULL) {
\r
106 EM_DEBUG_EXCEPTION("message : [%s]", error->message);
\r
107 g_error_free(error);
\r
108 return EMAIL_ERROR_IPC_PROTOCOL_FAILURE;
\r
111 EM_DEBUG_LOG("org_tizen_email_service_launch");
\r
113 g_object_unref (proxy);
\r
116 EM_DEBUG_EXCEPTION("dbus_g_proxy_new_for_name failed");
\r
120 EM_DEBUG_EXCEPTION("ERROR: Can't get on system bus [%s]", error->message);
\r
121 g_error_free(error);
\r
124 EM_DEBUG_FUNC_END("ret [%d]", err);
\r
129 EXPORT_API int emipc_init_dbus_connection()
\r
131 EM_DEBUG_FUNC_BEGIN();
\r
132 int err = EMAIL_ERROR_NONE;
\r
134 GError *error = NULL;
\r
135 DBusGProxy *proxy = NULL;
\r
140 connection = dbus_g_bus_get(DBUS_BUS_SYSTEM, &error);
\r
141 if (error == NULL) {
\r
142 object = (GObject *)g_object_new(EMAIL_SERVICE_TYPE, NULL);
\r
143 dbus_g_connection_register_g_object(connection, EMAIL_SERVICE_PATH, object);
\r
145 // register service
\r
146 proxy = dbus_g_proxy_new_for_name(connection, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS);
\r
147 if (proxy != NULL) {
\r
148 if (!org_freedesktop_DBus_request_name(proxy, EMAIL_SERVICE_NAME, 0, &ret, &error)) {
\r
149 EM_DEBUG_EXCEPTION("Unable to register service: %s", error->message);
\r
150 g_error_free(error);
\r
153 g_object_unref (proxy);
\r
156 EM_DEBUG_EXCEPTION("dbus_g_proxy_new_for_name failed");
\r
160 EM_DEBUG_EXCEPTION("ERROR: Can't get on system bus [%s]", error->message);
\r
161 g_error_free(error);
\r
163 EM_DEBUG_FUNC_END("err [%d]", err);
\r
167 gboolean email_service_launch(EmailService *email_service, guint *result_val, GError **error)
\r
169 EM_DEBUG_LOG("email_service_launch entered");
\r
171 EM_DEBUG_LOG("email_service_launch PID=[%ld]\n" , getpid());
\r
172 EM_DEBUG_LOG("email_service_launch TID=[%ld]" , pthread_self());
\r
174 launch_by_client = getpid();
\r