Sync with tizen 2.4
[platform/core/messaging/msg-service.git] / framework / transaction-manager / MsgCmdHandlerFilter.cpp
1 /*
2  * Copyright (c) 2014 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 "MsgDebug.h"
18 #include "MsgUtilFunction.h"
19 #include "MsgCppTypes.h"
20 #include "MsgSpamFilter.h"
21 #include "MsgStorageHandler.h"
22 #include "MsgCmdHandler.h"
23
24
25 /*==================================================================================================
26                                      FUNCTION IMPLEMENTATION
27 ==================================================================================================*/
28 int MsgAddFilterHandler(const MSG_CMD_S *pCmd, char **ppEvent)
29 {
30         msg_error_t err = MSG_SUCCESS;
31
32         int eventSize = 0;
33
34         // Get Filter Structure
35         MSG_FILTER_S* pFilter = (MSG_FILTER_S*)pCmd->cmdData;
36
37         // Add Filter
38         err = MsgStoAddFilter(pFilter);
39
40         if (err == MSG_SUCCESS)
41         {
42                 MSG_DEBUG("Command Handle Success : MsgStoAddFilter()");
43         }
44         else
45         {
46                 MSG_DEBUG("Command Handle Fail : MsgStoAddFilter()");
47         }
48
49         // Make Event Data
50         eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_ADD_FILTER, err, (void**)ppEvent);
51
52         return eventSize;
53 }
54
55
56 int MsgUpdateFilterHandler(const MSG_CMD_S *pCmd, char **ppEvent)
57 {
58         msg_error_t err = MSG_SUCCESS;
59
60         int eventSize = 0;
61
62         // Get Filter Structure
63         MSG_FILTER_S* pFilter = (MSG_FILTER_S*)pCmd->cmdData;
64
65         // Update Filter
66         err = MsgStoUpdateFilter(pFilter);
67
68         if (err == MSG_SUCCESS)
69         {
70                 MSG_DEBUG("Command Handle Success : MsgStoUpdateFilter()");
71         }
72         else
73         {
74                 MSG_DEBUG("Command Handle Fail : MsgStoUpdateFilter()");
75         }
76
77         // Make Event Data
78         eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_UPDATE_FILTER, err, (void**)ppEvent);
79
80         return eventSize;
81 }
82
83
84 int MsgDeleteFilterHandler(const MSG_CMD_S *pCmd, char **ppEvent)
85 {
86         msg_error_t err = MSG_SUCCESS;
87
88         int eventSize = 0;
89
90         // Get Filter Structure
91         msg_filter_id_t  *pFilterId = (msg_filter_id_t *)pCmd->cmdData;
92
93         MSG_DEBUG("Delete Filter id : %d", *pFilterId);
94
95         // Delete Filter
96         err = MsgStoDeleteFilter(*pFilterId);
97
98         if (err == MSG_SUCCESS)
99         {
100                 MSG_DEBUG("Command Handle Success : MsgStoDeleteFilter()");
101         }
102         else
103         {
104                 MSG_DEBUG("Command Handle Fail : MsgStoDeleteFilter()");
105         }
106
107         // Make Event Data
108         eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_DELETE_FILTER, err, (void**)ppEvent);
109
110         return eventSize;
111 }
112
113
114 int MsgSetFilterActivationHandler(const MSG_CMD_S *pCmd, char **ppEvent)
115 {
116         msg_error_t err = MSG_SUCCESS;
117
118         int eventSize = 0;
119
120         // Get Filter Structure
121         msg_filter_id_t  *pFilterId = (msg_filter_id_t *)pCmd->cmdData;
122
123         bool setFlag = false;
124
125         memcpy(&setFlag, pCmd->cmdData+sizeof(msg_filter_id_t), sizeof(bool));
126
127         MSG_DEBUG("Filter id : %d", *pFilterId);
128
129         // Delete Filter
130         err = MsgStoSetFilterActivation(*pFilterId, setFlag);
131
132         if (err == MSG_SUCCESS)
133         {
134                 MSG_DEBUG("Command Handle Success : MsgStoSetFilterActivation()");
135         }
136         else
137         {
138                 MSG_DEBUG("Command Handle Fail : MsgStoSetFilterActivation()");
139         }
140
141         // Make Event Data
142         eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_SET_FILTER_ACTIVATION, err, (void**)ppEvent);
143
144         return eventSize;
145 }
146
147
148 int MsgGetFilterListHandler(const MSG_CMD_S *pCmd, char **ppEvent)
149 {
150         msg_error_t err = MSG_SUCCESS;
151
152         char* encodedData = NULL;
153         AutoPtr<char> buf(&encodedData);
154
155         int dataSize = 0, eventSize = 0;
156
157         // Get Filter List
158         msg_struct_list_s filterList;
159
160         err = MsgStoGetFilterList(&filterList);
161
162         if (err == MSG_SUCCESS)
163         {
164                 MSG_DEBUG("Command Handle Success : MsgStoGetFilterList()");
165
166                 // Encoding Filter List Data
167                 dataSize = MsgEncodeFilterList(&filterList, &encodedData);
168
169                 if (filterList.msg_struct_info) {
170                         msg_struct_s *msg_struct;
171                         for (int i = 0; i < filterList.nCount; i++) {
172                                 msg_struct = (msg_struct_s *)filterList.msg_struct_info[i];
173                                 delete (MSG_FILTER_S *)msg_struct->data;
174                                 delete msg_struct;
175                         }
176                         g_free(filterList.msg_struct_info);
177                 }
178         }
179         else
180         {
181                 MSG_DEBUG("Command Handle Fail : MsgStoGetFilterList()");
182         }
183
184         // Make Event Data
185         eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_GET_FILTERLIST, err, (void**)ppEvent);
186
187         return eventSize;
188 }
189
190
191 int MsgSetFilterOperationHandler(const MSG_CMD_S *pCmd, char **ppEvent)
192 {
193         msg_error_t err = MSG_SUCCESS;
194
195         int eventSize = 0;
196
197         // Get Filter Flag
198         bool setFlag = false;
199
200         memcpy(&setFlag, pCmd->cmdData, sizeof(bool));
201
202         // Add Filter
203         err = MsgSetFilterOperation(setFlag);
204
205         if (err == MSG_SUCCESS)
206         {
207                 MSG_DEBUG("Command Handle Success : MsgSetFilterOperation()");
208         }
209         else
210         {
211                 MSG_DEBUG("Command Handle Fail : MsgSetFilterOperation()");
212         }
213
214         // Make Event Data
215         eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_SET_FILTER_OPERATION, err, (void**)ppEvent);
216
217         return eventSize;
218 }
219
220
221 int MsgGetFilterOperationHandler(const MSG_CMD_S *pCmd, char **ppEvent)
222 {
223         msg_error_t err = MSG_SUCCESS;
224
225         char* encodedData = NULL;
226         AutoPtr<char> buf(&encodedData);
227
228         int dataSize = 0, eventSize = 0;
229
230         // Get Filter List
231         bool setFlag = false;
232
233         err = MsgGetFilterOperation(&setFlag);
234
235         if (err == MSG_SUCCESS)
236         {
237                 MSG_DEBUG("Command Handle Success : MsgGetFilterOperation()");
238
239                 // Encoding Filter List Data
240                 dataSize = MsgEncodeFilterFlag(&setFlag, &encodedData);
241         }
242         else
243         {
244                 MSG_DEBUG("Command Handle Fail : MsgFilterGetFilterList()");
245         }
246
247         // Make Event Data
248         eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_GET_FILTER_OPERATION, err, (void**)ppEvent);
249
250         return eventSize;
251 }