Merge with Tizen 2.3
[platform/core/uifw/tts.git] / server / ttsd_main.c
1 /*
2 *  Copyright (c) 2011-2014 Samsung Electronics Co., Ltd All Rights Reserved 
3 *  Licensed under the Apache License, Version 2.0 (the "License");
4 *  you may not use this file except in compliance with the License.
5 *  You may obtain a copy of the License at
6 *  http://www.apache.org/licenses/LICENSE-2.0
7 *  Unless required by applicable law or agreed to in writing, software
8 *  distributed under the License is distributed on an "AS IS" BASIS,
9 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10 *  See the License for the specific language governing permissions and
11 *  limitations under the License.
12 */
13
14
15 #include "ttsd_main.h"
16 #include "ttsd_server.h"
17 #include "ttsd_dbus.h"
18 #include "ttsd_network.h"
19
20 #include <Ecore.h>
21 #include <privilege-control.h>
22
23 #define CLIENT_CLEAN_UP_TIME 500
24
25 static Ecore_Timer* g_check_client_timer = NULL;
26
27 const char* get_tag()
28 {
29         return "ttsd";
30 }
31
32 const char* tts_tag()
33 {
34         return "ttsd";
35 }
36
37 ttsd_mode_e ttsd_get_mode()
38 {
39         return TTSD_MODE_DEFAULT;
40 }
41
42 /* Main of TTS Daemon */
43 int main()
44 {
45         SLOG(LOG_DEBUG, get_tag(), "  ");
46         SLOG(LOG_DEBUG, get_tag(), "  ");
47         SLOG(LOG_DEBUG, get_tag(), "===== TTS DAEMON DEFAULT INITIALIZE");
48
49         if (!ecore_init()) {
50                 SLOG(LOG_ERROR, get_tag(), "[Main ERROR] Fail ecore_init()");
51                 return -1;
52         }
53
54         if (0 == setuid(0)) {
55                 /* daemon has root previlege */
56                 perm_app_set_privilege("tts", NULL, NULL);
57         }
58
59         if (0 != ttsd_dbus_open_connection()) {
60                 SLOG(LOG_ERROR, get_tag(), "[Main ERROR] Fail to open dbus connection");
61                 return EXIT_FAILURE;
62         }
63
64         if (0 != ttsd_initialize()) {
65                 SLOG(LOG_ERROR, get_tag(), "[Main ERROR] Fail to initialize tts-daemon"); 
66                 return EXIT_FAILURE;
67         }
68
69         if (0 != ttsd_network_initialize()) {
70                 SLOG(LOG_WARN, get_tag(), "[Main WARNING] Fail to initialize network");
71         }
72
73         g_check_client_timer = ecore_timer_add(CLIENT_CLEAN_UP_TIME, ttsd_cleanup_client, NULL);
74         if (NULL == g_check_client_timer) {
75                 SLOG(LOG_WARN, get_tag(), "[Main Warning] Fail to create timer of client check");
76         }
77
78         SLOG(LOG_DEBUG, get_tag(), "[Main] tts-daemon start..."); 
79         SLOG(LOG_DEBUG, get_tag(), "=====");
80         SLOG(LOG_DEBUG, get_tag(), "  ");
81         SLOG(LOG_DEBUG, get_tag(), "  ");
82         
83         ecore_main_loop_begin();
84
85         SLOG(LOG_DEBUG, get_tag(), "===== TTS DAEMON DEFAULT FINALIZE");
86
87         if (NULL != g_check_client_timer) {
88                 ecore_timer_del(g_check_client_timer);
89         }
90
91         ttsd_dbus_close_connection();
92
93         ttsd_network_finalize();
94
95         ttsd_finalize();
96
97         ecore_shutdown();
98
99         SLOG(LOG_DEBUG, get_tag(), "=====");
100         SLOG(LOG_DEBUG, get_tag(), "  ");
101         SLOG(LOG_DEBUG, get_tag(), "  ");
102
103         return 0;
104 }
105