d47524d9190d8f071131c4d1100d10e71e3f169f
[platform/core/system/sensord.git] / src / server / permission_checker.h
1 /*
2  * sensord
3  *
4  * Copyright (c) 2014 Samsung Electronics Co., Ltd.
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  *
18  */
19
20 #ifndef _PERMISSION_CHECKER_H_
21 #define _PERMISSION_CHECKER_H_
22
23 #include <cmutex.h>
24 #include <string>
25 #include <vector>
26 #include <memory>
27
28 class permission_checker {
29 public:
30         static permission_checker& get_instance(void);
31
32         int get_permission(int sock_fd);
33
34 private:
35         class permission_info {
36                 public:
37                 permission_info(int _permission, bool _need_to_check, std::string _priv)
38                 : permission(_permission)
39                 , need_to_check(_need_to_check)
40                 , privilege(_priv)
41                 {
42                 }
43                 int permission;
44                 bool need_to_check;
45                 std::string privilege;
46         };
47
48         typedef std::vector<std::shared_ptr<permission_info>> permission_info_vector;
49
50         permission_checker();
51         ~permission_checker();
52         permission_checker(permission_checker const&) {};
53         permission_checker& operator=(permission_checker const&);
54
55         void init(void);
56         void deinit(void);
57
58 private:
59         permission_info_vector m_permission_infos;
60         int m_permission_set;
61         cmutex m_mutex;
62
63         void init_cynara(void);
64 };
65
66 #endif /* _PERMISSION_CHECKER_H_ */