Add the new file : dbus activation
authorSunghyun Kwon <sh0701.kwon@samsung.com>
Mon, 10 Dec 2012 06:49:36 +0000 (15:49 +0900)
committerSunghyun Kwon <sh0701.kwon@samsung.com>
Mon, 10 Dec 2012 06:49:36 +0000 (15:49 +0900)
email-ipc/email-activation/email-dbus-activation.c [new file with mode: 0755]
email-ipc/email-activation/include/email-dbus-activation.h [new file with mode: 0755]

diff --git a/email-ipc/email-activation/email-dbus-activation.c b/email-ipc/email-activation/email-dbus-activation.c
new file mode 100755 (executable)
index 0000000..2929164
--- /dev/null
@@ -0,0 +1,177 @@
+/*\r
+*  email-service\r
+*\r
+* Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.\r
+*\r
+* Contact: Kyuho Jo <kyuho.jo@samsung.com>, Sunghyun Kwon <sh0701.kwon@samsung.com>\r
+*\r
+* Licensed under the Apache License, Version 2.0 (the "License");\r
+* you may not use this file except in compliance with the License.\r
+* You may obtain a copy of the License at\r
+*\r
+* http://www.apache.org/licenses/LICENSE-2.0\r
+*\r
+* Unless required by applicable law or agreed to in writing, software\r
+* distributed under the License is distributed on an "AS IS" BASIS,\r
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+* See the License for the specific language governing permissions and\r
+* limitations under the License.\r
+*\r
+*/\r
+\r
+#include <glib.h>\r
+#include <pthread.h>\r
+#include <dbus/dbus-glib.h>\r
+#include <dbus/dbus-glib-bindings.h>\r
+#include <sys/utsname.h>\r
+#include "email-types.h"\r
+#include "email-debug-log.h"\r
+#include "email-dbus-activation.h"\r
+#include "email-service-binding.h"\r
+#include "email-service-glue.h"\r
+#include <unistd.h>\r
+\r
+GMainLoop *loop = NULL;\r
+GObject *object = NULL;\r
+DBusGConnection *connection = NULL;\r
+\r
+static pid_t launch_by_client = 0;\r
+\r
+void __net_nfc_discovery_polling_cb(int signo);\r
+bool Check_Redwood();\r
+\r
+G_DEFINE_TYPE(EmailService, email_service, G_TYPE_OBJECT)\r
+\r
+#define __G_ASSERT(test, return_val, error, domain, error_code)\\r
+G_STMT_START\\r
+{\\r
+        if G_LIKELY (!(test)) { \\r
+                g_set_error (error, domain, error_code, #test); \\r
+                return (return_val); \\r
+        }\\r
+}\\r
+G_STMT_END\r
+\r
+\r
+static void email_service_init(EmailService *email_service)\r
+{\r
+       EM_DEBUG_LOG("email_service_init entered");\r
+}\r
+\r
+GQuark email_service_error_quark(void)\r
+{\r
+       EM_DEBUG_LOG("email_service_error_quark entered");\r
+       return g_quark_from_static_string("email_service_error");\r
+}\r
+\r
+\r
+static void email_service_class_init(EmailServiceClass *email_service_class)\r
+{\r
+       EM_DEBUG_LOG("email_service_class_init entered");\r
+\r
+       /*\r
+       dbus_g_object_type_install_info(EMAIL_SERVICE_TYPE, &dbus_glib_nfc_service_object_info);\r
+       */\r
+}\r
+\r
+EXPORT_API int emipc_launch_email_service()\r
+{\r
+       EM_DEBUG_FUNC_BEGIN();\r
+       int err = EMAIL_ERROR_NONE;\r
+\r
+       /*DBUS*/\r
+       DBusGConnection *connection = NULL;\r
+       DBusGProxy *proxy = NULL;\r
+       GError *error = NULL;\r
+       guint dbus_result = 0;\r
+\r
+       //if(!g_thread_supported()) {\r
+       //      g_thread_init(NULL);\r
+       //}\r
+\r
+       //dbus_g_thread_init();\r
+\r
+       g_type_init();\r
+\r
+       //pthread_mutex_lock(&g_client_context.g_client_lock);\r
+\r
+       connection = dbus_g_bus_get(DBUS_BUS_SYSTEM, &error);\r
+       if (error == NULL) {\r
+               proxy = dbus_g_proxy_new_for_name(connection, EMAIL_SERVICE_NAME, EMAIL_SERVICE_PATH, EMAIL_SERVICE_NAME);\r
+\r
+               if (proxy != NULL) {\r
+                       if (org_tizen_email_service_launch(proxy, &dbus_result, &error) == false) {\r
+                               EM_DEBUG_EXCEPTION("email_service_launch failed");\r
+                               if (error != NULL) {\r
+                                       EM_DEBUG_EXCEPTION("message : [%s]", error->message);\r
+                                       g_error_free(error);\r
+                                       return EMAIL_ERROR_IPC_PROTOCOL_FAILURE;\r
+                               }\r
+                       }\r
+                       EM_DEBUG_LOG("org_tizen_email_service_launch");\r
+\r
+                       g_object_unref (proxy);\r
+               }\r
+               else {\r
+                       EM_DEBUG_EXCEPTION("dbus_g_proxy_new_for_name failed");\r
+               }\r
+       }\r
+       else {\r
+               EM_DEBUG_EXCEPTION("ERROR: Can't get on system bus [%s]", error->message);\r
+               g_error_free(error);\r
+       }\r
+\r
+       EM_DEBUG_FUNC_END("ret [%d]", err);\r
+       return err;\r
+}\r
+\r
+\r
+EXPORT_API int emipc_init_dbus_connection()\r
+{\r
+       EM_DEBUG_FUNC_BEGIN();\r
+       int err = EMAIL_ERROR_NONE;\r
+\r
+       GError *error = NULL;\r
+       DBusGProxy *proxy = NULL;\r
+       guint ret = 0;\r
+\r
+       g_type_init();\r
+\r
+       connection = dbus_g_bus_get(DBUS_BUS_SYSTEM, &error);\r
+       if (error == NULL) {\r
+               object = (GObject *)g_object_new(EMAIL_SERVICE_TYPE, NULL);\r
+               dbus_g_connection_register_g_object(connection, EMAIL_SERVICE_PATH, object);\r
+\r
+               // register service\r
+               proxy = dbus_g_proxy_new_for_name(connection, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS);\r
+               if (proxy != NULL) {\r
+                       if (!org_freedesktop_DBus_request_name(proxy, EMAIL_SERVICE_NAME, 0, &ret, &error)) {\r
+                               EM_DEBUG_EXCEPTION("Unable to register service: %s", error->message);\r
+                               g_error_free(error);\r
+                       }\r
+\r
+                       g_object_unref (proxy);\r
+               }\r
+               else {\r
+                       EM_DEBUG_EXCEPTION("dbus_g_proxy_new_for_name failed");\r
+               }\r
+       }\r
+       else {\r
+               EM_DEBUG_EXCEPTION("ERROR: Can't get on system bus [%s]", error->message);\r
+               g_error_free(error);\r
+       }\r
+       EM_DEBUG_FUNC_END("err [%d]", err);\r
+       return err;\r
+}\r
+\r
+gboolean email_service_launch(EmailService *email_service, guint *result_val, GError **error)\r
+{\r
+       EM_DEBUG_LOG("email_service_launch entered");\r
+\r
+       EM_DEBUG_LOG("email_service_launch PID=[%ld]\n" , getpid());\r
+       EM_DEBUG_LOG("email_service_launch TID=[%ld]" , pthread_self());\r
+\r
+       launch_by_client = getpid();\r
+\r
+       return TRUE;\r
+}\r
diff --git a/email-ipc/email-activation/include/email-dbus-activation.h b/email-ipc/email-activation/include/email-dbus-activation.h
new file mode 100755 (executable)
index 0000000..37b4e41
--- /dev/null
@@ -0,0 +1,72 @@
+/*\r
+*  email-service\r
+*\r
+* Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.\r
+*\r
+* Contact: Kyuho Jo <kyuho.jo@samsung.com>, Sunghyun Kwon <sh0701.kwon@samsung.com>\r
+*\r
+* Licensed under the Apache License, Version 2.0 (the "License");\r
+* you may not use this file except in compliance with the License.\r
+* You may obtain a copy of the License at\r
+*\r
+* http://www.apache.org/licenses/LICENSE-2.0\r
+*\r
+* Unless required by applicable law or agreed to in writing, software\r
+* distributed under the License is distributed on an "AS IS" BASIS,\r
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+* See the License for the specific language governing permissions and\r
+* limitations under the License.\r
+*\r
+*/\r
+\r
+\r
+#ifndef __EMAIL_DBUS_ACTIVATION_H__\r
+#define __EMAIL_DBUS_ACTIVATION_H__\r
+\r
+/* standard library header */\r
+#include <glib-object.h>\r
+\r
+typedef struct _email_service_t EmailService;\r
+typedef struct _email_service_class_t EmailServiceClass;\r
+\r
+\r
+#define EMAIL_SERVICE_NAME "org.tizen.email_service"\r
+#define EMAIL_SERVICE_PATH "/org/tizen/email_service"\r
+\r
+GType email_service_get_type(void);\r
+\r
+struct _email_service_t\r
+{\r
+       GObject parent;\r
+       int status;\r
+};\r
+\r
+struct _email_service_class_t\r
+{\r
+       GObjectClass parent;\r
+};\r
+\r
+#define EMAIL_SERVICE_TYPE              (email_service_get_type())\r
+#define EMAIL_SERVICE(object)           (G_TYPE_CHECK_INSTANCE_CAST ((object), EMAIL_SERVICE_TYPE, EmailService))\r
+#define EMAIL_SERVICE_CLASS(klass)      (G_TYPE_CHECK_CLASS_CAST ((klass), EMAIL_SERVICE_TYPE, EmailServiceClass))\r
+#define IS_EMAIL_SERVICE(object)        (G_TYPE_CHECK_INSTANCE_TYPE ((object), EMAIL_SERVICE_TYPE))\r
+#define IS_EMAIL_SERVICE_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE ((klass), EMAIL_SERVICE_TYPE))\r
+#define EMAIL_SERVICE_GET_CLASS(obj)    (G_TYPE_INSTANCE_GET_CLASS ((obj), EMAIL_SERVICE_TYPE, EmailServiceClass))\r
+\r
+typedef enum\r
+{\r
+       NFC_SERVICE_ERROR_INVALID_PRAM\r
+} email_servcie_error;\r
+\r
+GQuark email_service_error_quark(void);\r
+#define EMAIL_SERVICE_ERROR email_service_error_quark()\r
+\r
+/**\r
+ *     launch the email-service\r
+ */\r
+gboolean email_service_launch(EmailService *email_service, guint *result_val, GError **error);\r
+\r
+EXPORT_API int emipc_init_dbus_connection();\r
+EXPORT_API int emipc_launch_email_service();\r
+\r
+#endif /* __EMAIL_DBUS_ACTIVATION_H__ */\r