|
1 /* |
|
2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). |
|
3 * All rights reserved. |
|
4 * This component and the accompanying materials are made available |
|
5 * under the terms of "Eclipse Public License v1.0" |
|
6 * which accompanies this distribution, and is available |
|
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
8 * |
|
9 * Initial Contributors: |
|
10 * Nokia Corporation - initial contribution. |
|
11 * |
|
12 * Contributors: |
|
13 * |
|
14 * Description: |
|
15 * |
|
16 */ |
|
17 #ifndef __BLACKLISTSERVER_H__ |
|
18 #define __BLACKLISTSERVER_H__ |
|
19 |
|
20 // SYSTEM INCLUDE |
|
21 #include <e32base.h> // CTrapCleanup |
|
22 #include <f32file.h> |
|
23 |
|
24 // FORWARD DECLERATIONS |
|
25 class CMdSSqLiteConnection; |
|
26 class CBlacklistItem; |
|
27 class RRowData; |
|
28 |
|
29 /*! |
|
30 @class CBlacklistServer |
|
31 @discussion An instance of the CBlacklistServer object |
|
32 */ |
|
33 class CBlacklistServer : public CPolicyServer |
|
34 { |
|
35 public: |
|
36 /*! |
|
37 @function NewL |
|
38 @discussion factory function. |
|
39 */ |
|
40 static CBlacklistServer* NewL(); |
|
41 |
|
42 /*! |
|
43 @function NewLC |
|
44 @discussion factory function, pointer is in cleanupstack. |
|
45 */ |
|
46 static CBlacklistServer* NewLC(); |
|
47 |
|
48 /*! |
|
49 @function ~CBlacklistServer |
|
50 @discussion standard C++ destructor. |
|
51 */ |
|
52 virtual ~CBlacklistServer(); |
|
53 |
|
54 /*! |
|
55 @function AddSession |
|
56 @discussion adds new session. |
|
57 */ |
|
58 void AddSession(); |
|
59 /*! |
|
60 @function RemoveSession |
|
61 @discussion removes session. |
|
62 */ |
|
63 void RemoveSession(); |
|
64 |
|
65 /*! |
|
66 @function MemoryHandle |
|
67 @discussion returns memory handle. |
|
68 @result integer value to indicate memory handle. |
|
69 */ |
|
70 TInt MemoryHandle(); |
|
71 |
|
72 /*! |
|
73 @function OpenDatabaseL |
|
74 @discussion Opens server database. |
|
75 */ |
|
76 void OpenDatabaseL(); |
|
77 |
|
78 /*! |
|
79 @function AddL |
|
80 @discussion Add object to server's list. |
|
81 @param aMediaId - drive id where object is located (E,C ...). |
|
82 @param aUri - object uri. |
|
83 @param aLastModifiedTime - time when object is modified. |
|
84 */ |
|
85 void AddL( const TUint32& mediaId, const TDesC& aUri, const TTime& aLastModifiedTime ); |
|
86 |
|
87 /*! |
|
88 @function RemoveL |
|
89 @discussion Removes object from server's list. |
|
90 @param aUri - object uri. |
|
91 @param aMediaId - drive id where object is located (E,C ...). |
|
92 */ |
|
93 void RemoveL( const TUint32& mediaId, const TDesC& aUri ); |
|
94 |
|
95 /*! |
|
96 @function RemoveFromDBL |
|
97 @discussion removes object from server's database. |
|
98 @param aUri - object uri. |
|
99 @param aMediaId - drive id where object is located (E,C ...). |
|
100 */ |
|
101 void RemoveFromDBL( const TDesC& aUri, const TUint32 aMediaId ); |
|
102 |
|
103 /*! |
|
104 @function AddToDBL |
|
105 @discussion Adds object to server's database. |
|
106 @param aUri - object uri. |
|
107 @param aMediaId - drive id where object is located (E,C ...). |
|
108 @param aLastModifiedTime - time when object is modified. |
|
109 */ |
|
110 void AddToDBL( const TDesC& aUri, const TUint32 aMediaId, const TInt64& aLastModifiedTime ); |
|
111 |
|
112 /*! |
|
113 @function CloseDB |
|
114 @discussion closes server's database. |
|
115 */ |
|
116 void CloseDB(); |
|
117 |
|
118 /*! |
|
119 @function ExeMainL |
|
120 @discussion creates server. |
|
121 */ |
|
122 static void ExeMainL(); |
|
123 |
|
124 protected: // Functions from base classes |
|
125 |
|
126 /*! |
|
127 @function CustomSecurityCheckL |
|
128 @discussion check if service is allowed. |
|
129 */ |
|
130 CPolicyServer::TCustomResult CustomSecurityCheckL( |
|
131 const RMessage2 &aMsg, TInt &aAction, TSecurityInfo &aMissing ); |
|
132 |
|
133 /*! |
|
134 @function CustomFailureActionL |
|
135 @discussion not used. |
|
136 */ |
|
137 CPolicyServer::TCustomResult CustomFailureActionL( |
|
138 const RMessage2 &aMsg, TInt aAction, const TSecurityInfo &aMissing ); |
|
139 private: |
|
140 |
|
141 /*! |
|
142 @function CBlacklistServer |
|
143 @discussion standard C++ constructor |
|
144 */ |
|
145 CBlacklistServer(); |
|
146 |
|
147 /*! |
|
148 @function RBlacklistClient |
|
149 @discussion two phase constructor |
|
150 */ |
|
151 void ConstructL(); |
|
152 |
|
153 /*! |
|
154 @function NewSessionL |
|
155 @discussion creates new session |
|
156 @param aVersion, server version. |
|
157 @param aMessage, not used. |
|
158 @result return blacklist session. |
|
159 */ |
|
160 CSession2* NewSessionL( const TVersion& aVersion, const RMessage2& aMessage ) const; |
|
161 |
|
162 /*! |
|
163 @function NewSessionL |
|
164 @discussion creates new session |
|
165 @param aVersion, server version. |
|
166 @result KErrNone or error if server RunL fails. |
|
167 */ |
|
168 TInt RunError( TInt aError ); |
|
169 |
|
170 private: |
|
171 |
|
172 /*! |
|
173 @function CloseDatabase |
|
174 @discussion closes server database. |
|
175 */ |
|
176 void CloseDatabase(); |
|
177 |
|
178 /*! |
|
179 @function LoadDatabaseToMemoryL |
|
180 @discussion load database to server's list |
|
181 */ |
|
182 void LoadDatabaseToMemoryL(); |
|
183 |
|
184 /*! |
|
185 @function CreateBlacklistTableL |
|
186 @discussion Creates blacklist table. |
|
187 */ |
|
188 void CreateBlacklistTableL(); |
|
189 |
|
190 /*! |
|
191 @function AddToMemoryTableL |
|
192 @discussion adds object to server's list. |
|
193 @param aLastModifiedTime - time when object is modified. |
|
194 @param aUri - object uri. |
|
195 @param aMediaId - drive id where object is located (E,C ...). |
|
196 */ |
|
197 void AddToMemoryTableL( const TInt64& aModified, const TDesC& aUri, |
|
198 const TUint32 aMediaId ); |
|
199 |
|
200 /*! |
|
201 @function RemoveFromMemoryTable |
|
202 @discussion removes object from server's list |
|
203 @param aUri - object uri. |
|
204 @param aMediaId - drive id where object is located (E,C ...). |
|
205 */ |
|
206 void RemoveFromMemoryTable( const TDesC& aUri, |
|
207 const TUint32 aMediaId ); |
|
208 |
|
209 /*! |
|
210 @function GetMemoryTableIndex |
|
211 @discussion returns list index. |
|
212 @param aUri - object uri. |
|
213 @param aMediaId - drive id where object is located (E,C ...). |
|
214 @result returns list index. |
|
215 */ |
|
216 TInt GetMemoryTableIndex( const TDesC& aUri, TUint32 aMediaId ); |
|
217 |
|
218 /*! |
|
219 @function TableExistsL |
|
220 @discussion |
|
221 @result ETrue if table exists, EFalse otherwise. |
|
222 */ |
|
223 TBool TableExistsL(); |
|
224 |
|
225 /*! |
|
226 @function SerializeToSharedMemoryL |
|
227 @discussion creates serialized buffer. |
|
228 */ |
|
229 void SerializeToSharedMemoryL(); |
|
230 |
|
231 /*! |
|
232 @function WriteAllDataToDBL |
|
233 @discussion write all data to server's database. |
|
234 */ |
|
235 void WriteAllDataToDBL(); |
|
236 |
|
237 /*! |
|
238 @function CommitBufferedItemsL |
|
239 @discussion commits buffered items to server's database. |
|
240 */ |
|
241 void CommitBufferedItemsL(); |
|
242 |
|
243 private: // private data |
|
244 |
|
245 /*! @var iSessionCount to indicate session count.*/ |
|
246 TInt iSessionCount; |
|
247 |
|
248 /*! @var iBlacklistServerChunk global memory chunk.*/ |
|
249 RChunk iBlacklistServerChunk; |
|
250 |
|
251 /*! @var iSqLiteConnection to handle database connections.*/ |
|
252 CMdSSqLiteConnection* iSqLiteConnection; |
|
253 |
|
254 /*! @var iDatabaseOpen flag to indicate if database is open or not.*/ |
|
255 TBool iDatabaseOpen; |
|
256 |
|
257 /*! @var iDBUpdateNeeded flag to indicate if databse need updating.*/ |
|
258 TBool iDBUpdateNeeded; |
|
259 |
|
260 /*! @var iBlacklistMemoryTable contains objects which are serialized to client.*/ |
|
261 RPointerArray<CBlacklistItem> iBlacklistMemoryTable; |
|
262 |
|
263 /*! @var iBufferedRemoveItems contains all buferred removed items.*/ |
|
264 RPointerArray<RRowData> iBufferedRemoveItems; |
|
265 |
|
266 /*! @var iBufferedAddedItems contains all buferred added items.*/ |
|
267 RPointerArray<RRowData> iBufferedAddedItems; |
|
268 |
|
269 /*! @var iHandle server handle.*/ |
|
270 TInt iHandle; |
|
271 }; |
|
272 |
|
273 #endif // __BLACKLISTSERVER_H__ |