2.0_beta
[framework/messaging/msg-service.git] / framework / transaction-manager / MsgCmdHandlerFilter.cpp
1 /*
2 * Copyright 2012  Samsung Electronics Co., Ltd
3 *
4 * Licensed under the Flora License, Version 1.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.tizenopensource.org/license
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 MsgGetFilterListHandler(const MSG_CMD_S *pCmd, char **ppEvent)
115 {
116         msg_error_t err = MSG_SUCCESS;
117
118         char* encodedData = NULL;
119         AutoPtr<char> buf(&encodedData);
120
121         int dataSize = 0, eventSize = 0;
122
123         // Get Filter List
124         msg_struct_list_s filterList;
125
126         err = MsgStoGetFilterList(&filterList);
127
128         if (err == MSG_SUCCESS)
129         {
130                 MSG_DEBUG("Command Handle Success : MsgStoGetFilterList()");
131
132                 // Encoding Filter List Data
133                 dataSize = MsgEncodeFilterList(&filterList, &encodedData);
134
135                 delete [] filterList.msg_struct_info;
136         }
137         else
138         {
139                 MSG_DEBUG("Command Handle Fail : MsgStoGetFilterList()");
140         }
141
142         // Make Event Data
143         eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_GET_FILTERLIST, err, (void**)ppEvent);
144
145         return eventSize;
146 }
147
148
149 int MsgSetFilterOperationHandler(const MSG_CMD_S *pCmd, char **ppEvent)
150 {
151         msg_error_t err = MSG_SUCCESS;
152
153         int eventSize = 0;
154
155         // Get Filter Flag
156         bool setFlag = false;
157
158         memcpy(&setFlag, pCmd->cmdData, sizeof(bool));
159
160         // Add Filter
161         err = MsgSetFilterOperation(setFlag);
162
163         if (err == MSG_SUCCESS)
164         {
165                 MSG_DEBUG("Command Handle Success : MsgSetFilterOperation()");
166         }
167         else
168         {
169                 MSG_DEBUG("Command Handle Fail : MsgSetFilterOperation()");
170         }
171
172         // Make Event Data
173         eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_SET_FILTER_OPERATION, err, (void**)ppEvent);
174
175         return eventSize;
176 }
177
178
179 int MsgGetFilterOperationHandler(const MSG_CMD_S *pCmd, char **ppEvent)
180 {
181         msg_error_t err = MSG_SUCCESS;
182
183         char* encodedData = NULL;
184         AutoPtr<char> buf(&encodedData);
185
186         int dataSize = 0, eventSize = 0;
187
188         // Get Filter List
189         bool setFlag = false;
190
191         err = MsgGetFilterOperation(&setFlag);
192
193         if (err == MSG_SUCCESS)
194         {
195                 MSG_DEBUG("Command Handle Success : MsgGetFilterOperation()");
196
197                 // Encoding Filter List Data
198                 dataSize = MsgEncodeFilterFlag(&setFlag, &encodedData);
199         }
200         else
201         {
202                 MSG_DEBUG("Command Handle Fail : MsgFilterGetFilterList()");
203         }
204
205         // Make Event Data
206         eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_GET_FILTER_OPERATION, err, (void**)ppEvent);
207
208         return eventSize;
209 }