Adjust logging level
[platform/core/connectivity/smartcard-service.git] / server / ClientInstance.cpp
1 /*
2  * Copyright (c) 2012, 2013 Samsung Electronics Co., Ltd.
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 /* standard library header */
18 #include <pthread.h>
19
20 /* SLP library header */
21
22 /* local header */
23 #include "Debug.h"
24 #include "ClientInstance.h"
25 #include "ServerResource.h"
26 #include "SignatureHelper.h"
27
28 namespace smartcard_service_api
29 {
30         void ClientInstance::setPID(int pid)
31         {
32                 this->pid = pid;
33         }
34
35         ServiceInstance *ClientInstance::createService(unsigned int context)
36         {
37                 ServiceInstance *result = NULL;
38
39                 if ((result = getService(context)) == NULL)
40                 {
41                         result = new ServiceInstance(this, context);
42                         if (result != NULL)
43                         {
44                                 mapServices.insert(make_pair(context, result));
45                         }
46                         else
47                         {
48                                 _ERR("alloc failed");
49                         }
50                 }
51                 else
52                 {
53                         _ERR("service already exist [%d]", context);
54                 }
55
56                 return result;
57         }
58
59         ServiceInstance *ClientInstance::getService(unsigned int context)
60         {
61                 ServiceInstance *result = NULL;
62                 map<unsigned int, ServiceInstance *>::iterator item;
63
64                 if ((item = mapServices.find(context)) != mapServices.end())
65                 {
66                         result = item->second;
67                 }
68
69                 return result;
70         }
71
72         void ClientInstance::removeService(unsigned int context)
73         {
74                 map<unsigned int, ServiceInstance *>::iterator item;
75
76                 if ((item = mapServices.find(context)) != mapServices.end())
77                 {
78                         delete item->second;
79                         mapServices.erase(item);
80                 }
81         }
82
83         void ClientInstance::removeServices()
84         {
85                 map<unsigned int, ServiceInstance *>::iterator item;
86
87                 for (item = mapServices.begin(); item != mapServices.end(); item++)
88                 {
89                         delete item->second;
90                 }
91
92                 mapServices.clear();
93         }
94
95         bool ClientInstance::sendMessageToAllServices(int socket, Message &msg)
96         {
97                 bool result = true;
98                 map<unsigned int, ServiceInstance *>::iterator item;
99
100                 for (item = mapServices.begin(); item != mapServices.end(); item++)
101                 {
102                         if (ServerIPC::getInstance()->sendMessage(socket, &msg) == false)
103                                 result = false;
104                 }
105
106                 return result;
107         }
108
109         void ClientInstance::generateCertificationHashes()
110         {
111                 SignatureHelper::getCertificationHashes(getPID(), certHashes);
112         }
113 } /* namespace smartcard_service_api */