Tizen 2.0 Release
[platform/core/messaging/email-service.git] / email-ipc / email-ipc-proxy.c
1 /*
2 *  email-service
3 *
4 * Copyright (c) 2012 - 2013 Samsung Electronics Co., Ltd. All rights reserved.
5 *
6 * Contact: Kyuho Jo <kyuho.jo@samsung.com>, Sunghyun Kwon <sh0701.kwon@samsung.com>
7 *
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
11 *
12 * http://www.apache.org/licenses/LICENSE-2.0
13 *
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 *
20 */
21
22 #include "email-ipc-build.h"
23 #include "email-ipc.h"
24 #include "email-ipc-api-info.h"
25 #include "email-ipc-param-list.h"
26 #include "email-ipc-socket.h"
27 #include "email-proxy-main.h"
28
29 #include "email-debug-log.h"
30 #include "email-api.h"
31 #include "email-types.h"
32 #include "email-internal-types.h"
33 #include "email-dbus-activation.h"
34
35 EXPORT_API int emipc_initialize_proxy()
36 {
37         EM_DEBUG_FUNC_BEGIN();
38
39         int err = EMAIL_ERROR_NONE;
40
41         err = emipc_launch_email_service();
42         EM_DEBUG_LOG("emipc_launch_email_service returns [%d]", err);
43
44         err = emipc_initialize_proxy_main();
45         EM_DEBUG_LOG("emipc_initialize_proxy_main returns [%d]", err);
46
47         EM_DEBUG_FUNC_END("err [%d]", err);
48         return err;
49 }
50
51 EXPORT_API int emipc_finalize_proxy()
52 {
53         EM_DEBUG_FUNC_BEGIN();
54         return emipc_finalize_proxy_main();
55 }
56
57 EXPORT_API int emipc_execute_proxy_api(HIPC_API api)
58 {
59         EM_DEBUG_FUNC_BEGIN();
60         int ret;
61         int err = EMAIL_ERROR_NONE;
62         emipc_email_api_info *api_info = (emipc_email_api_info *)api;
63
64         EM_DEBUG_LOG("API [%p]", api_info);
65
66         if(api_info == NULL) {
67                 EM_DEBUG_EXCEPTION("EMAIL_ERROR_INVALID_PARAM");
68                 return EMAIL_ERROR_INVALID_PARAM;
69         }
70
71         EM_DEBUG_LOG("APIID [%s], ResponseID [%d], APPID[%d]",
72                                 EM_APIID_TO_STR(api_info->api_id), api_info->response_id, api_info->app_id);
73
74         ret = emipc_execute_api_of_proxy_main(api_info);
75
76         /* connection retry */
77         if (!ret) {
78                 EM_DEBUG_LOG("Connection retry");
79                 emipc_finalize_proxy();
80
81                 err = emipc_initialize_proxy();
82                 if (err != EMAIL_ERROR_NONE) {
83                         EM_DEBUG_EXCEPTION("Failed to open the socket : [%d]", err);
84                         err = EMAIL_ERROR_CONNECTION_FAILURE;
85                         goto FINISH_OFF;
86                 }
87
88                 ret = emipc_execute_api_of_proxy_main(api_info);
89                 if (!ret) {
90                         EM_DEBUG_EXCEPTION("emipc_proxy_main : emipc_execute_api failed [%d]", err);
91                         err = EMAIL_ERROR_CONNECTION_FAILURE;
92                         goto FINISH_OFF;
93                 }
94         }
95
96 FINISH_OFF:
97         EM_DEBUG_FUNC_END("err [%d]", err);
98         return err;
99 }
100