Add signal handler for client process
[platform/core/multimedia/mm-resource-manager.git] / src / daemon / mm_resource_manager_daemon_conf.c
1 /*
2  * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16
17 #include <glib.h>
18 #include <iniparser.h>
19
20 #include "common/mm_resource_manager_utils.h"
21 #include "daemon/mm_resource_manager_daemon_conf.h"
22
23
24
25 #define MM_RESOURCE_MANAGER_INI_FILE "/etc/multimedia/mmfw_resource_manager.ini"
26 #define MM_RESOURCE_MANAGER_INI_MAX_VOLUME "max volume:"
27 #define MM_RESOURCE_MANAGER_INI_PRIORITY "priority:"
28 #define MM_RESOURCE_MANAGER_INI_MAX_INSTANCE "max instance:"
29
30
31
32 static mm_resource_manager_conf_s mm_resource_manager_conf = {
33         {[0 ... MM_RESOURCE_MANAGER_RES_TYPE_MAX - 1] =
34                 MM_RESOURCE_MANAGER_NO_RES},
35         {[0 ... MM_RESOURCE_MANAGER_APP_CLASS_MAX - 1] =
36                 MM_RESOURCE_MANAGER_NO_APP_CLASS},
37         {[0 ... MM_RESOURCE_MANAGER_RES_TYPE_MAX - 1]
38          [0 ... MM_RESOURCE_MANAGER_RES_TYPE_COND_MAX - 1] =
39                 MM_RESOURCE_MANAGER_NO_RES},
40         {[0 ... MM_RESOURCE_MANAGER_RES_TYPE_MAX - 1] =
41                 MM_RESOURCE_MANAGER_NO_RES}
42 };
43
44
45
46 gboolean mm_resource_manager_reload_conf(void)
47 {
48         dictionary *ini;
49         GString *param_name;
50         int i, j;
51
52         ini = iniparser_load(MM_RESOURCE_MANAGER_INI_FILE);
53         MM_RM_RETVM_IF(ini == NULL, FALSE,
54                         "Daemon cannot load conf file '%s'", MM_RESOURCE_MANAGER_INI_FILE);
55
56         param_name = g_string_sized_new(64);
57
58         for (i = 0; i < MM_RESOURCE_MANAGER_RES_TYPE_MAX; i++) {
59                 mm_resource_manager_conf.max_volume[i] = iniparser_getint(ini,
60                                 g_string_append(g_string_assign(param_name,
61                                 MM_RESOURCE_MANAGER_INI_MAX_VOLUME),
62                                 _mm_resource_manager_get_res_str(i))->str,
63                                 MM_RESOURCE_MANAGER_NO_RES);
64                 if (mm_resource_manager_conf.max_volume[i] >= 1) {
65                         if (mm_resource_manager_conf.max_volume[i] > 1)
66                                 mm_resource_manager_conf.volume_would_be_checked[i] = TRUE;
67                         for (j = 0; j < MM_RESOURCE_MANAGER_RES_TYPE_COND_MAX; j++) {
68                                 g_string_printf(param_name, "%s:%s",
69                                                 _mm_resource_manager_get_res_str(i),
70                                                 _mm_resource_manager_get_condition_str(j));
71                                 mm_resource_manager_conf.condition_volume[i][j] =
72                                                 iniparser_getint(ini, param_name->str,
73                                                 MM_RESOURCE_MANAGER_NO_RES);
74                         }
75                 }
76         }
77
78         for (i = 0; i < MM_RESOURCE_MANAGER_APP_CLASS_MAX; i++) {
79                 mm_resource_manager_conf.priority[i] = iniparser_getint(ini,
80                                 g_string_append(g_string_assign(param_name,
81                                 MM_RESOURCE_MANAGER_INI_PRIORITY),
82                                 _mm_resource_manager_get_app_class_str(i))->str,
83                                 MM_RESOURCE_MANAGER_NO_APP_CLASS);
84         }
85
86         for (i = 0; i < MM_RESOURCE_MANAGER_RES_TYPE_MAX; i++) {
87                 mm_resource_manager_conf.max_instance[i] = iniparser_getint(ini,
88                                 g_string_append(g_string_assign(param_name,
89                                 MM_RESOURCE_MANAGER_INI_MAX_INSTANCE),
90                                 _mm_resource_manager_get_res_str(i))->str,
91                                 MM_RESOURCE_MANAGER_NO_RES);
92         }
93
94         g_string_free(param_name, TRUE);
95         iniparser_freedict(ini);
96
97         return TRUE;
98 }
99
100 mm_resource_manager_conf_s* mm_resource_manager_get_conf(void)
101 {
102         return &mm_resource_manager_conf;
103 }