changeset 47 | 63cf70d3ecd8 |
parent 20 | 6e82ae192c3a |
44:a5deb6b96675 | 47:63cf70d3ecd8 |
---|---|
20 @file |
20 @file |
21 */ |
21 */ |
22 #include "sbedataowner.h" |
22 #include "sbedataowner.h" |
23 #include "sbebufferhandler.h" |
23 #include "sbebufferhandler.h" |
24 #include "sbpackagedatatransfer.h" |
24 #include "sbpackagedatatransfer.h" |
25 #include "sblog.h" |
|
26 |
25 |
27 #include <babackup.h> |
26 #include <babackup.h> |
28 #include <swi/backuprestore.h> |
27 #include <swi/backuprestore.h> |
29 #include <swi/sisregistryentry.h> |
28 #include <swi/sisregistryentry.h> |
30 #include <swi/sisregistrypackage.h> |
29 #include <swi/sisregistrypackage.h> |
31 |
30 |
32 #include "sbeparserdefs.h" |
31 #include "sbeparserdefs.h" |
32 #include "OstTraceDefinitions.h" |
|
33 #include "sbtrace.h" |
|
34 #ifdef OST_TRACE_COMPILER_IN_USE |
|
35 #include "sbpackagedatatransferTraces.h" |
|
36 #endif |
|
33 |
37 |
34 namespace conn |
38 namespace conn |
35 { |
39 { |
36 _LIT(KSys, "?:\\sys\\*"); |
40 _LIT(KSys, "?:\\sys\\*"); |
37 _LIT(KResource, "?:\\resource\\*"); |
41 _LIT(KResource, "?:\\resource\\*"); |
44 |
48 |
45 @param aPid Package Id |
49 @param aPid Package Id |
46 @return a CPackageDataTransfer object |
50 @return a CPackageDataTransfer object |
47 */ |
51 */ |
48 { |
52 { |
53 OstTraceFunctionEntry0( CPACKAGEDATATRANSFER_NEWL_ENTRY ); |
|
49 CPackageDataTransfer* self = CPackageDataTransfer::NewLC(aPid, aDOM); |
54 CPackageDataTransfer* self = CPackageDataTransfer::NewLC(aPid, aDOM); |
50 CleanupStack::Pop(self); |
55 CleanupStack::Pop(self); |
56 OstTraceFunctionExit0( CPACKAGEDATATRANSFER_NEWL_EXIT ); |
|
51 return self; |
57 return self; |
52 } |
58 } |
53 |
59 |
54 CPackageDataTransfer* CPackageDataTransfer::NewLC(TUid aPid, CDataOwnerManager* aDOM) |
60 CPackageDataTransfer* CPackageDataTransfer::NewLC(TUid aPid, CDataOwnerManager* aDOM) |
55 /** Standard Symbian Constructor |
61 /** Standard Symbian Constructor |
56 |
62 |
57 @param aPid Package Id |
63 @param aPid Package Id |
58 @return a CPackageDataTransfer object |
64 @return a CPackageDataTransfer object |
59 */ |
65 */ |
60 { |
66 { |
67 OstTraceFunctionEntry0( CPACKAGEDATATRANSFER_NEWLC_ENTRY ); |
|
61 CPackageDataTransfer *self = new(ELeave) CPackageDataTransfer(aPid, aDOM); |
68 CPackageDataTransfer *self = new(ELeave) CPackageDataTransfer(aPid, aDOM); |
62 CleanupStack::PushL(self); |
69 CleanupStack::PushL(self); |
63 self->ConstructL(); |
70 self->ConstructL(); |
71 OstTraceFunctionExit0( CPACKAGEDATATRANSFER_NEWLC_EXIT ); |
|
64 return self; |
72 return self; |
65 } |
73 } |
66 |
74 |
67 CPackageDataTransfer::CPackageDataTransfer(TUid aPid, CDataOwnerManager* aDOM) : |
75 CPackageDataTransfer::CPackageDataTransfer(TUid aPid, CDataOwnerManager* aDOM) : |
68 /** Standard C++ Constructor |
76 /** Standard C++ Constructor |
71 */ |
79 */ |
72 iBufferSnapshotReader(NULL), |
80 iBufferSnapshotReader(NULL), |
73 iBufferFileWriter(NULL), iBufferSnapshotWriter(NULL), |
81 iBufferFileWriter(NULL), iBufferSnapshotWriter(NULL), |
74 iPackageID(aPid), iSnapshot(NULL), iMetaData(NULL), ipDataOwnerManager(aDOM), iRestored(EFalse) |
82 iPackageID(aPid), iSnapshot(NULL), iMetaData(NULL), ipDataOwnerManager(aDOM), iRestored(EFalse) |
75 { |
83 { |
84 OstTraceFunctionEntry0( CPACKAGEDATATRANSFER_CPACKAGEDATATRANSFER_CONS_ENTRY ); |
|
76 // needed for intiliazion |
85 // needed for intiliazion |
77 iDriveList.SetLength(KMaxDrives); |
86 iDriveList.SetLength(KMaxDrives); |
78 iDriveList.FillZ(); |
87 iDriveList.FillZ(); |
79 // needed for hashes in registry on drive C (i.e. MMC card app's hash) |
88 // needed for hashes in registry on drive C (i.e. MMC card app's hash) |
80 iDriveList[EDriveC] = ETrue; |
89 iDriveList[EDriveC] = ETrue; |
90 OstTraceFunctionExit0( CPACKAGEDATATRANSFER_CPACKAGEDATATRANSFER_CONS_EXIT ); |
|
81 } |
91 } |
82 |
92 |
83 void CPackageDataTransfer::ConstructL() |
93 void CPackageDataTransfer::ConstructL() |
84 /** Standard Symbian second phase constructor |
94 /** Standard Symbian second phase constructor |
85 */ |
95 */ |
86 { |
96 { |
87 User::LeaveIfError(iSWIRestore.Connect()); |
97 OstTraceFunctionEntry0( CPACKAGEDATATRANSFER_CONSTRUCTL_ENTRY ); |
88 User::LeaveIfError(iSWIBackup.Connect()); |
98 TInt err = iSWIRestore.Connect(); |
89 User::LeaveIfError(iFs.Connect()); |
99 LEAVEIFERROR(err, OstTrace1(TRACE_ERROR, CPACKAGEDATATRANSFER_CONSTRUCTL, "error = %d", err)); |
90 User::LeaveIfError(iFs.ShareProtected()); |
100 err = iSWIBackup.Connect(); |
101 LEAVEIFERROR(err, OstTrace1(TRACE_ERROR, DUP1_CPACKAGEDATATRANSFER_CONSTRUCTL, "error = %d", err)); |
|
102 err = iFs.Connect(); |
|
103 LEAVEIFERROR(err, OstTrace1(TRACE_ERROR, DUP2_CPACKAGEDATATRANSFER_CONSTRUCTL, "error = %d", err)); |
|
104 err = iFs.ShareProtected(); |
|
105 LEAVEIFERROR(err, OstTrace1(TRACE_ERROR, DUP3_CPACKAGEDATATRANSFER_CONSTRUCTL, "error = %d", err)); |
|
91 iRegistrationFile = HBufC::NewL(0); |
106 iRegistrationFile = HBufC::NewL(0); |
92 iFileName = HBufC::NewL(KMaxFileName); |
107 iFileName = HBufC::NewL(KMaxFileName); |
93 iTempFileName = HBufC::NewL(KMaxFileName); |
108 iTempFileName = HBufC::NewL(KMaxFileName); |
109 OstTraceFunctionExit0( CPACKAGEDATATRANSFER_CONSTRUCTL_EXIT ); |
|
94 } |
110 } |
95 |
111 |
96 CPackageDataTransfer::~CPackageDataTransfer() |
112 CPackageDataTransfer::~CPackageDataTransfer() |
97 /** Standard C++ Destructor |
113 /** Standard C++ Destructor |
98 */ |
114 */ |
99 { |
115 { |
116 OstTraceFunctionEntry0( CPACKAGEDATATRANSFER_CPACKAGEDATATRANSFER_DES_ENTRY ); |
|
100 iSWIRestore.Close(); |
117 iSWIRestore.Close(); |
101 iSWIBackup.Close(); |
118 iSWIBackup.Close(); |
102 iFileHandle.Close(); |
119 iFileHandle.Close(); |
103 iFiles.ResetAndDestroy(); |
120 iFiles.ResetAndDestroy(); |
104 iPublicSelections.ResetAndDestroy(); |
121 iPublicSelections.ResetAndDestroy(); |
110 delete iSnapshot; |
127 delete iSnapshot; |
111 delete iMetaData; |
128 delete iMetaData; |
112 delete iFileName; |
129 delete iFileName; |
113 delete iTempFileName; |
130 delete iTempFileName; |
114 iFs.Close(); |
131 iFs.Close(); |
132 OstTraceFunctionExit0( CPACKAGEDATATRANSFER_CPACKAGEDATATRANSFER_DES_EXIT ); |
|
115 } |
133 } |
116 |
134 |
117 |
135 |
118 void CPackageDataTransfer::WriteData(TAny* aItem, TPtr8& aBuffer, |
136 void CPackageDataTransfer::WriteData(TAny* aItem, TPtr8& aBuffer, |
119 TInt aSize) |
137 TInt aSize) |
122 @param aItem Item to write |
140 @param aItem Item to write |
123 @param aBuffer Buffer to write aItem to |
141 @param aBuffer Buffer to write aItem to |
124 @param aSize Size of the aItem |
142 @param aSize Size of the aItem |
125 */ |
143 */ |
126 { |
144 { |
145 OstTraceFunctionEntry0( CPACKAGEDATATRANSFER_WRITEDATA_ENTRY ); |
|
127 TUint8 *pos = reinterpret_cast<TUint8*>(aItem); |
146 TUint8 *pos = reinterpret_cast<TUint8*>(aItem); |
128 for (TInt i = 0; i < aSize; ++i) |
147 for (TInt i = 0; i < aSize; ++i) |
129 { |
148 { |
130 aBuffer.Append(pos[i]); |
149 aBuffer.Append(pos[i]); |
131 } |
150 } |
151 OstTraceFunctionExit0( CPACKAGEDATATRANSFER_WRITEDATA_EXIT ); |
|
132 } |
152 } |
133 |
153 |
134 TUid CPackageDataTransfer::PackageId() const |
154 TUid CPackageDataTransfer::PackageId() const |
135 /** Returns the package Id |
155 /** Returns the package Id |
136 |
156 |
147 @param apSnapshot (OPTIONAL)A file will only be included if the file is not |
167 @param apSnapshot (OPTIONAL)A file will only be included if the file is not |
148 in the snapshot is newer than the file in the snapshot |
168 in the snapshot is newer than the file in the snapshot |
149 @param aFileNames on return the list of files |
169 @param aFileNames on return the list of files |
150 */ |
170 */ |
151 { |
171 { |
152 __LOG("CPackageDataTransfer::BuildPackageFileListL() - START"); |
172 OstTraceFunctionEntry0( CPACKAGEDATATRANSFER_BUILDPACKAGEFILELIST_ENTRY ); |
153 // Establish a connection to the registry and read the list of |
173 // Establish a connection to the registry and read the list of |
154 // filenames into array. |
174 // filenames into array. |
155 // |
175 // |
156 |
176 |
157 iDriveList.SetLength(KMaxDrives); |
177 iDriveList.SetLength(KMaxDrives); |
158 iDriveList.FillZ(); |
178 iDriveList.FillZ(); |
159 // also set EDriveC to True for hashesh of the registry |
179 // also set EDriveC to True for hashesh of the registry |
160 iDriveList[EDriveC] = ETrue; |
180 iDriveList[EDriveC] = ETrue; |
161 |
181 |
162 TUint count = iFiles.Count(); |
182 TUint count = iFiles.Count(); |
163 __LOG1("CPackageDataTransfer::BuildPackageFileListL() - No of files: %d", count); |
183 OstTrace1(TRACE_NORMAL, CPACKAGEDATATRANSFER_BUILDPACKAGEFILELIST, "No of files: %d", count); |
164 while (count > 0) |
184 while (count > 0) |
165 { |
185 { |
166 count--; |
186 count--; |
167 TBool remove = EFalse; |
187 TBool remove = EFalse; |
168 TFileName fileName (*iFiles[count]); |
188 TFileName fileName (*iFiles[count]); |
211 } |
231 } |
212 } |
232 } |
213 } // for |
233 } // for |
214 |
234 |
215 |
235 |
216 #ifdef SBE_LOGGING_ENABLED |
236 const TUint fNameCount = iFiles.Count(); |
217 const TUint fNameCount = iFiles.Count(); |
237 if (fNameCount) |
218 if (fNameCount) |
238 { |
219 { |
239 for(TUint k=0; k<fNameCount; k++) |
220 for(TUint k=0; k<fNameCount; k++) |
240 { |
221 { |
241 const TDesC& file = *iFiles[k]; |
222 const TDesC& file = *iFiles[k]; |
242 OstTraceExt2(TRACE_NORMAL, DUP1_CPACKAGEDATATRANSFER_BUILDPACKAGEFILELIST, "Files Added - file entry[%03d] %S", static_cast<TInt32>(k), file); |
223 __LOG2("CPackageDataTransfer::BuildPackageFileListL() - Files Added - file entry[%03d] %S", k, &file); |
243 } |
224 } |
244 } |
225 } |
245 |
226 #endif |
246 OstTraceFunctionExit0( CPACKAGEDATATRANSFER_BUILDPACKAGEFILELIST_EXIT ); |
227 |
|
228 |
|
229 __LOG("CPackageDataTransfer::BuildPackageFileListL() - END"); |
|
230 } |
247 } |
231 |
248 |
232 |
249 |
233 void CPackageDataTransfer::GetExpectedDataSizeL(TPackageDataType aTransferType, TDriveNumber aDriveNumber, TUint& aSize) |
250 void CPackageDataTransfer::GetExpectedDataSizeL(TPackageDataType aTransferType, TDriveNumber aDriveNumber, TUint& aSize) |
234 /** Get the expected data size of a request for data |
251 /** Get the expected data size of a request for data |
236 @param aTransferType the type of data to check the size of |
253 @param aTransferType the type of data to check the size of |
237 @param aDriveNumber the drive to check |
254 @param aDriveNumber the drive to check |
238 @param aSize on return the size of the data |
255 @param aSize on return the size of the data |
239 */ |
256 */ |
240 { |
257 { |
241 __LOG("CPackageDataTransfer::GetExpectedDataSizeL - Begin getmetadata"); |
258 OstTraceFunctionEntry0( CPACKAGEDATATRANSFER_GETEXPECTEDDATASIZEL_ENTRY ); |
259 OstTrace0(TRACE_NORMAL, CPACKAGEDATATRANSFER_GETEXPECTEDDATASIZEL, "Begin getmetadata"); |
|
242 if (iMetaData == NULL) |
260 if (iMetaData == NULL) |
243 { |
261 { |
244 TRAPD(err, iMetaData = iSWIBackup.GetMetaDataL(iPackageID, iFiles)); |
262 TRAPD(err, iMetaData = iSWIBackup.GetMetaDataL(iPackageID, iFiles)); |
245 |
263 |
246 if(KErrNotSupported == err) |
264 if(KErrNotSupported == err) |
247 {//Non-Removable package, nothing to backup |
265 {//Non-Removable package, nothing to backup |
248 aSize = 0; |
266 aSize = 0; |
249 __LOG("CPackageDataTransfer::GetExpectedDataSizeL - GetMetaDataL - KErrNotSupported"); |
267 OstTrace0(TRACE_NORMAL, DUP1_CPACKAGEDATATRANSFER_GETEXPECTEDDATASIZEL, "GetMetaDataL - KErrNotSupported"); |
268 OstTraceFunctionExit0( CPACKAGEDATATRANSFER_GETEXPECTEDDATASIZEL_EXIT ); |
|
250 return; |
269 return; |
251 } |
270 } |
252 else if(KErrNone != err) |
271 else if(KErrNone != err) |
253 { |
272 { |
254 __LOG1("CPackageDataTransfer::GetExpectedDataSizeL - GetMetaDataL leave with %d", err); |
273 OstTrace1(TRACE_ERROR, DUP2_CPACKAGEDATATRANSFER_GETEXPECTEDDATASIZEL, "GetMetaDataL leave with %d", err); |
255 User::Leave(err); |
274 User::Leave(err); |
256 } |
275 } |
257 |
276 |
258 iMetaDataSize = iMetaData->Size(); |
277 iMetaDataSize = iMetaData->Size(); |
259 BuildPackageFileList(); |
278 BuildPackageFileList(); |
260 } |
279 } |
261 __LOG("CPackageDataTransfer::GetExpectedDataSizeL - End getmetadata"); |
280 OstTrace0(TRACE_NORMAL, DUP3_CPACKAGEDATATRANSFER_GETEXPECTEDDATASIZEL, "End getmetadata"); |
262 |
281 |
263 if (!IsDataOnDrive(aDriveNumber)) |
282 if (!IsDataOnDrive(aDriveNumber)) |
264 { |
283 { |
265 // no data on drive |
284 // no data on drive |
266 aSize = 0; |
285 aSize = 0; |
286 OstTraceFunctionExit0( DUP1_CPACKAGEDATATRANSFER_GETEXPECTEDDATASIZEL_EXIT ); |
|
267 return; |
287 return; |
268 } |
288 } |
269 |
289 |
270 aSize = iMetaData->Size(); |
290 aSize = iMetaData->Size(); |
271 TUint count = iFiles.Count(); |
291 TUint count = iFiles.Count(); |
272 |
292 |
273 switch (aTransferType) |
293 switch (aTransferType) |
274 { |
294 { |
275 case ESystemSnapshotData: |
295 case ESystemSnapshotData: |
276 { |
296 { |
277 __LOG1("CPackageDataTransfer::GetExpectedDataSizeL() - START - ESystemSnapshotData - aDriveNumber: %c", aDriveNumber + 'A'); |
297 OstTraceExt1(TRACE_NORMAL, DUP4_CPACKAGEDATATRANSFER_GETEXPECTEDDATASIZEL, "ESystemSnapshotData - aDriveNumber: %c", aDriveNumber + 'A'); |
278 // Find all files |
298 // Find all files |
279 aSize = (count * sizeof(TSnapshot)); |
299 aSize = (count * sizeof(TSnapshot)); |
280 __LOG1("CPackageDataTransfer::GetExpectedDataSizeL() - passive snapshot count: %d", count); |
300 OstTrace1(TRACE_NORMAL, DUP5_CPACKAGEDATATRANSFER_GETEXPECTEDDATASIZEL, "passive snapshot count: %d", count); |
281 for (TUint x = 0; x < count; x++) |
301 for (TUint x = 0; x < count; x++) |
282 { |
302 { |
283 const TDesC& fileName = *iFiles[x]; |
303 const TDesC& fileName = *iFiles[x]; |
284 const TInt fileSize = fileName.Length();; |
304 const TInt fileSize = fileName.Length();; |
285 __LOG2("CPackageDataTransfer::GetExpectedDataSizeL() - passive snapshot file: %S, size: %d", &fileName, fileSize); |
305 OstTraceExt2(TRACE_NORMAL, DUP6_CPACKAGEDATATRANSFER_GETEXPECTEDDATASIZEL, "passive snapshot file: %S, size: %d", fileName, fileSize); |
286 aSize += fileSize; |
306 aSize += fileSize; |
287 } // for x |
307 } // for x |
288 |
308 |
289 break; |
309 break; |
290 } |
310 } |
291 case ESystemData: |
311 case ESystemData: |
292 { |
312 { |
293 __LOG1("CPackageDataTransfer::GetExpectedDataSizeL() - START - ESystemData - aDriveNumber: %c", aDriveNumber + 'A'); |
313 OstTraceExt1(TRACE_NORMAL, DUP7_CPACKAGEDATATRANSFER_GETEXPECTEDDATASIZEL, "ESystemData - aDriveNumber: %c", aDriveNumber + 'A'); |
294 |
314 |
295 aSize += sizeof(TInt); |
315 aSize += sizeof(TInt); |
296 |
316 |
297 TEntry entry; |
317 TEntry entry; |
298 __LOG1("CPackageDataTransfer::GetExpectedDataSizeL() - passive file count: %d", count); |
318 OstTrace1(TRACE_NORMAL, DUP8_CPACKAGEDATATRANSFER_GETEXPECTEDDATASIZEL, "passive file count: %d", count); |
299 for (TUint x = 0; x < count; x++) |
319 for (TUint x = 0; x < count; x++) |
300 { |
320 { |
301 const TDesC& fileName = *iFiles[x]; |
321 const TDesC& fileName = *iFiles[x]; |
302 TInt err = iFs.Entry(fileName, entry); |
322 TInt err = iFs.Entry(fileName, entry); |
303 TUint fileSize = entry.iSize; |
323 TUint fileSize = entry.iSize; |
304 __LOG2("CPackageDataTransfer::GetExpectedDataSizeL() - passive file: %S, size: %d", &fileName, fileSize); |
324 OstTraceExt2(TRACE_NORMAL, DUP9_CPACKAGEDATATRANSFER_GETEXPECTEDDATASIZEL, "passive file: %S, size: %d", fileName, static_cast<TInt32>(fileSize)); |
305 switch(err) |
325 switch(err) |
306 { |
326 { |
307 case KErrNone: |
327 case KErrNone: |
308 aSize += fileSize; |
328 aSize += fileSize; |
309 break; |
329 break; |
310 case KErrNotFound: |
330 case KErrNotFound: |
311 case KErrPathNotFound: |
331 case KErrPathNotFound: |
312 case KErrBadName: |
332 case KErrBadName: |
313 __LOG2("CPackageDataTransfer::GetExpectedDataSizeL() - error getting passive file: %S, error: %d", &fileName, err); |
333 OstTraceExt2(TRACE_NORMAL, DUP10_CPACKAGEDATATRANSFER_GETEXPECTEDDATASIZEL, "error getting passive file: %S, error: %d", fileName, err); |
314 break; |
334 break; |
315 default: |
335 default: |
336 OstTrace1(TRACE_ERROR, DUP13_CPACKAGEDATATRANSFER_GETEXPECTEDDATASIZEL, "Leave: %d", err); |
|
316 User::Leave(err); |
337 User::Leave(err); |
317 } |
338 } |
318 } |
339 } |
319 |
340 |
320 break; |
341 break; |
321 } |
342 } |
322 default: |
343 default: |
323 { |
344 { |
324 __LOG2("CPackageDataTransfer::GetExpectedDataSizeL() - No case for TransferType: %d, data owner 0x%08x", aTransferType, iPackageID.iUid); |
345 OstTraceExt2(TRACE_ERROR, DUP11_CPACKAGEDATATRANSFER_GETEXPECTEDDATASIZEL, "No case for TransferType: %d, data owner 0x%08x", static_cast<TInt32>(aTransferType), iPackageID.iUid); |
325 User::Leave(KErrNotSupported); |
346 User::Leave(KErrNotSupported); |
326 } |
347 } |
327 } // switch |
348 } // switch |
328 __LOG2("CPackageDataTransfer::GetExpectedDataSizeL() - END - size is: %d, data owner 0x%08x", aSize, iPackageID.iUid); |
349 OstTraceExt2(TRACE_NORMAL, DUP12_CPACKAGEDATATRANSFER_GETEXPECTEDDATASIZEL, "size is: %d, data owner 0x%08x", static_cast<TInt32>(aSize), iPackageID.iUid); |
350 OstTraceFunctionExit0( DUP2_CPACKAGEDATATRANSFER_GETEXPECTEDDATASIZEL_EXIT ); |
|
329 } |
351 } |
330 |
352 |
331 void CPackageDataTransfer::RequestDataL(TDriveNumber aDriveNumber, |
353 void CPackageDataTransfer::RequestDataL(TDriveNumber aDriveNumber, |
332 TPackageDataType aTransferType, |
354 TPackageDataType aTransferType, |
333 TPtr8& aBuffer, |
355 TPtr8& aBuffer, |
340 @param aLastSection has all the data been supplied. If all data is not |
362 @param aLastSection has all the data been supplied. If all data is not |
341 supplied a further calls to the function will return the extra |
363 supplied a further calls to the function will return the extra |
342 data. |
364 data. |
343 */ |
365 */ |
344 { |
366 { |
345 __LOG6("CPackageDataTransfer::RequestDataL() - START - aDrive: %c, aTransferType: %d, iSecureId: 0x%08x, iState.iState: %d, iState.iTransferType: %d, aBuffer.Length(): %d", aDriveNumber + 'A', aTransferType, iPackageID.iUid, iState.iState, iState.iTransferType, aBuffer.Length()); |
367 OstTraceFunctionEntry0( CPACKAGEDATATRANSFER_REQUESTDATAL_ENTRY ); |
346 //__LOGDATA("CPackageDataTransfer::RequestDataL() - %S", aBuffer.Ptr(), aBuffer.Length() ); |
368 OstTraceExt3(TRACE_NORMAL, CPACKAGEDATATRANSFER_REQUESTDATAL, "aDrive: %c, aTransferType: %d, iSecureId: 0x%08x", static_cast<TInt8>(aDriveNumber + 'A'), static_cast<TInt32>(aTransferType), static_cast<TUint32>(iPackageID.iUid)); |
369 OstTraceExt3(TRACE_NORMAL, DUP4_CPACKAGEDATATRANSFER_REQUESTDATAL, "iState.iState: %d, iState.iTransferType: %d, aBuffer.Length(): %d", static_cast<TInt32>(iState.iState), static_cast<TInt32>(iState.iTransferType), static_cast<TInt32>(aBuffer.Length())); |
|
347 |
370 |
348 TInt err = KErrNone; |
371 TInt err = KErrNone; |
349 |
372 |
350 if (iMetaData == NULL) |
373 if (iMetaData == NULL) |
351 { |
374 { |
354 if(KErrNotSupported == err) |
377 if(KErrNotSupported == err) |
355 {//Non-Removable package, nothing to backup |
378 {//Non-Removable package, nothing to backup |
356 iState.iState = ENone; |
379 iState.iState = ENone; |
357 aLastSection = ETrue; |
380 aLastSection = ETrue; |
358 Cleanup(); |
381 Cleanup(); |
382 OstTraceFunctionExit0( CPACKAGEDATATRANSFER_REQUESTDATAL_EXIT ); |
|
359 return; |
383 return; |
360 } |
384 } |
361 else if(KErrNone != err) |
385 else if(KErrNone != err) |
362 { |
386 { |
363 iState.iState = ENone; |
387 iState.iState = ENone; |
364 aLastSection = ETrue; |
388 aLastSection = ETrue; |
365 Cleanup(); |
389 Cleanup(); |
390 OstTrace1(TRACE_ERROR, DUP3_CPACKAGEDATATRANSFER_REQUESTDATAL, "Leave: %d", err); |
|
366 User::Leave(err); |
391 User::Leave(err); |
367 } |
392 } |
368 |
393 |
369 iMetaDataSize = iMetaData->Size(); |
394 iMetaDataSize = iMetaData->Size(); |
370 BuildPackageFileList(); |
395 BuildPackageFileList(); |
373 // Check our state |
398 // Check our state |
374 if (!((iState.iState == ENone) || (iState.iState == EBuffer) || |
399 if (!((iState.iState == ENone) || (iState.iState == EBuffer) || |
375 ((iState.iState == ERequest) && (iState.iDriveNumber == aDriveNumber) && |
400 ((iState.iState == ERequest) && (iState.iDriveNumber == aDriveNumber) && |
376 (iState.iTransferType == aTransferType)))) |
401 (iState.iTransferType == aTransferType)))) |
377 { |
402 { |
378 __LOG("CPackageDataTransfer::RequestDataL() - bad state => ERROR => KErrNotReady"); |
403 OstTrace0(TRACE_ERROR, DUP1_CPACKAGEDATATRANSFER_REQUESTDATAL, "bad state => ERROR => KErrNotReady"); |
379 User::Leave(KErrNotReady); |
404 User::Leave(KErrNotReady); |
380 } |
405 } |
381 |
406 |
382 // Set the state? |
407 // Set the state? |
383 if (iState.iState == ENone) |
408 if (iState.iState == ENone) |
406 |
431 |
407 if (err != KErrNone) |
432 if (err != KErrNone) |
408 { |
433 { |
409 iState.iState = ENone; |
434 iState.iState = ENone; |
410 Cleanup(); |
435 Cleanup(); |
411 __LOG1("CPackageDataTransfer::RequestDataL() - Left with error: %d", err); |
436 OstTrace1(TRACE_ERROR, DUP2_CPACKAGEDATATRANSFER_REQUESTDATAL, "Leave with error: %d", err); |
412 User::Leave(err); |
437 User::Leave(err); |
413 } // if |
438 } // if |
414 __LOG("CPackageDataTransfer::RequestDataL() - END"); |
439 |
440 OstTraceFunctionExit0( DUP1_CPACKAGEDATATRANSFER_REQUESTDATAL_EXIT ); |
|
415 } |
441 } |
416 |
442 |
417 |
443 |
418 void CPackageDataTransfer::ReadData(TAny* aDestinationAddress, const TDesC8& aBuffer, TInt aSize) |
444 void CPackageDataTransfer::ReadData(TAny* aDestinationAddress, const TDesC8& aBuffer, TInt aSize) |
419 /** Read data from the given buffer |
445 /** Read data from the given buffer |
421 @param aItem the item to fill |
447 @param aItem the item to fill |
422 @param aBuffer the buffer to read the data from |
448 @param aBuffer the buffer to read the data from |
423 @param aSize the size of the item to fill |
449 @param aSize the size of the item to fill |
424 */ |
450 */ |
425 { |
451 { |
452 OstTraceFunctionEntry0( CPACKAGEDATATRANSFER_READDATA_ENTRY ); |
|
426 TUint8* pos = reinterpret_cast<TUint8*>(aDestinationAddress); |
453 TUint8* pos = reinterpret_cast<TUint8*>(aDestinationAddress); |
427 for (TInt i = 0; i < aSize; ++i) |
454 for (TInt i = 0; i < aSize; ++i) |
428 { |
455 { |
429 pos[i] = aBuffer[i]; |
456 pos[i] = aBuffer[i]; |
430 } |
457 } |
458 OstTraceFunctionExit0( CPACKAGEDATATRANSFER_READDATA_EXIT ); |
|
431 } |
459 } |
432 |
460 |
433 void CPackageDataTransfer::SupplyFileDataL( const TDesC8& aBuffer, TBool aLastSection) |
461 void CPackageDataTransfer::SupplyFileDataL( const TDesC8& aBuffer, TBool aLastSection) |
434 /** Restores files from the buffer to the package. |
462 /** Restores files from the buffer to the package. |
435 |
463 |
436 @param aBuffer the buffer to read data from |
464 @param aBuffer the buffer to read data from |
437 @param aLastSection has all data been supplied |
465 @param aLastSection has all data been supplied |
438 */ |
466 */ |
439 { |
467 { |
440 __LOG1("CPackageDataTransfer::SupplyFileDataL() - START - aLastSection: %d", aLastSection); |
468 OstTraceFunctionEntry0( CPACKAGEDATATRANSFER_SUPPLYFILEDATAL_ENTRY ); |
469 OstTrace1(TRACE_NORMAL, CPACKAGEDATATRANSFER_SUPPLYFILEDATAL, "aLastSection: %d", aLastSection); |
|
441 TUint8* current = const_cast<TUint8*>(aBuffer.Ptr()); |
470 TUint8* current = const_cast<TUint8*>(aBuffer.Ptr()); |
442 const TUint8* end = current + aBuffer.Size(); |
471 const TUint8* end = current + aBuffer.Size(); |
443 while (current < end) |
472 while (current < end) |
444 { |
473 { |
445 if (!iFixedHeaderRead) |
474 if (!iFixedHeaderRead) |
446 { |
475 { |
447 if (ReadFromBufferF(iFixedHeader, current, end) == EFalse) |
476 if (ReadFromBufferF(iFixedHeader, current, end) == EFalse) |
448 { |
477 { |
449 __LOG("CPackageDataTransfer::SupplyFileDataL() - ReadFromBufferF() returned False so breaking!"); |
478 OstTrace0(TRACE_NORMAL, DUP1_CPACKAGEDATATRANSFER_SUPPLYFILEDATAL, "ReadFromBufferF() returned False so breaking!"); |
450 break; |
479 break; |
451 } // if |
480 } // if |
452 |
481 |
453 __LOG1("CPackageDataTransfer::SupplyFileDataL() - fixed header - iFileNameLength: %d", iFixedHeader.iFileNameLength); |
482 OstTrace1(TRACE_NORMAL, DUP2_CPACKAGEDATATRANSFER_SUPPLYFILEDATAL, "fixed header - iFileNameLength: %d", iFixedHeader.iFileNameLength); |
454 __LOG1("CPackageDataTransfer::SupplyFileDataL() - fixed header - iFileSize: %d", iFixedHeader.iFileSize); |
483 OstTrace1(TRACE_NORMAL, DUP3_CPACKAGEDATATRANSFER_SUPPLYFILEDATAL, "fixed header - iFileSize: %d", iFixedHeader.iFileSize); |
455 __LOG1("CPackageDataTransfer::SupplyFileDataL() - fixed header - iAttributes: %d", iFixedHeader.iAttributes); |
484 OstTrace1(TRACE_NORMAL, DUP4_CPACKAGEDATATRANSFER_SUPPLYFILEDATAL, "fixed header - iAttributes: %d", iFixedHeader.iAttributes); |
456 |
485 |
457 if ((iFixedHeader.iFileNameLength > KMaxFileName) || (!iFixedHeader.iFileNameLength)) |
486 if ((iFixedHeader.iFileNameLength > KMaxFileName) || (!iFixedHeader.iFileNameLength)) |
458 { |
487 { |
459 __LOG1("CBufferFileReader::SupplyFileDataL() - Leaving - iFileNameLength: %d more then MaxLength", iFixedHeader.iFileNameLength); |
488 OstTrace1(TRACE_ERROR, DUP5_CPACKAGEDATATRANSFER_SUPPLYFILEDATAL, "Leave with KErrOverflow - iFileNameLength: %d more then MaxLength", iFixedHeader.iFileNameLength); |
460 User::Leave(KErrOverflow); |
489 User::Leave(KErrOverflow); |
461 } |
490 } |
462 |
491 |
463 iFixedHeaderRead = ETrue; |
492 iFixedHeaderRead = ETrue; |
464 } //if |
493 } //if |
467 TPtr8 ptr(reinterpret_cast<TUint8*>(const_cast<TUint16*>(iFileName->Des().Ptr())), iBytesRead,iFixedHeader.iFileNameLength * KCharWidthInBytes); |
496 TPtr8 ptr(reinterpret_cast<TUint8*>(const_cast<TUint16*>(iFileName->Des().Ptr())), iBytesRead,iFixedHeader.iFileNameLength * KCharWidthInBytes); |
468 |
497 |
469 if (ReadFromBufferV(ptr, iFixedHeader.iFileNameLength * KCharWidthInBytes, current, end) == EFalse) |
498 if (ReadFromBufferV(ptr, iFixedHeader.iFileNameLength * KCharWidthInBytes, current, end) == EFalse) |
470 { |
499 { |
471 iBytesRead = ptr.Size(); |
500 iBytesRead = ptr.Size(); |
472 __LOG1("CPackageDataTransfer::SupplyFileDataL() - ReadFromBufferV() returned False - Filename bytes read: %d", iBytesRead); |
501 OstTrace1(TRACE_NORMAL, DUP6_CPACKAGEDATATRANSFER_SUPPLYFILEDATAL, "ReadFromBufferV() returned False - Filename bytes read: %d", iBytesRead); |
473 break; |
502 break; |
474 } // if |
503 } // if |
475 |
504 |
476 if (iFixedHeader.iFileNameLength > KMaxFileName) |
505 if (iFixedHeader.iFileNameLength > KMaxFileName) |
477 { |
506 { |
478 __LOG("CBufferFileReader::SupplyFileDataL() - Leave with KErrOverflow"); |
507 OstTrace0(TRACE_ERROR, DUP7_CPACKAGEDATATRANSFER_SUPPLYFILEDATAL, "Leave with KErrOverflow"); |
479 User::Leave(KErrOverflow); |
508 User::Leave(KErrOverflow); |
480 } |
509 } |
481 |
510 |
482 iFileName->Des().SetLength(iFixedHeader.iFileNameLength); |
511 iFileName->Des().SetLength(iFixedHeader.iFileNameLength); |
483 iFileNameRead = ETrue; |
512 iFileNameRead = ETrue; |
484 |
513 |
485 __LOG1("CPackageDataTransfer::SupplyFileDataL() - FileName: %S", iFileName); |
514 OstTraceExt1(TRACE_NORMAL, DUP8_CPACKAGEDATATRANSFER_SUPPLYFILEDATAL, "FileName: %S", *iFileName); |
486 } |
515 } |
487 |
516 |
488 if (!iFileOpen) |
517 if (!iFileOpen) |
489 { |
518 { |
490 TFileName tempPath; |
519 TFileName tempPath; |
504 iTempFileName = tempFile.AllocL(); |
533 iTempFileName = tempFile.AllocL(); |
505 } |
534 } |
506 |
535 |
507 if (tempErr != KErrNone) |
536 if (tempErr != KErrNone) |
508 { |
537 { |
509 __LOG2("CPackageDataTransfer::SupplyFileDataL() - Left creating temp file in: %S , with %d", &tempPath, tempErr); |
538 OstTraceExt2(TRACE_ERROR, DUP9_CPACKAGEDATATRANSFER_SUPPLYFILEDATAL, "Leave while creating temp file in: %S , with %d", tempPath, tempErr); |
510 User::Leave(tempErr); |
539 User::Leave(tempErr); |
511 } |
540 } |
512 |
541 |
513 |
542 |
514 iFileOpen = ETrue; |
543 iFileOpen = ETrue; |
515 } |
544 } |
516 |
545 |
517 // Write to the file |
546 // Write to the file |
547 TInt err; |
|
518 TInt filesize; |
548 TInt filesize; |
519 iFileHandle.Size(filesize); |
549 iFileHandle.Size(filesize); |
520 |
550 |
521 if ((end - current) >= (iFixedHeader.iFileSize - filesize)) |
551 if ((end - current) >= (iFixedHeader.iFileSize - filesize)) |
522 { |
552 { |
523 TPtr8 ptr(current, iFixedHeader.iFileSize - filesize, iFixedHeader.iFileSize - filesize); |
553 TPtr8 ptr(current, iFixedHeader.iFileSize - filesize, iFixedHeader.iFileSize - filesize); |
524 User::LeaveIfError(iFileHandle.Write(ptr)); |
554 err = iFileHandle.Write(ptr); |
555 LEAVEIFERROR(err, OstTrace1(TRACE_ERROR, DUP13_CPACKAGEDATATRANSFER_SUPPLYFILEDATAL, "error = %d", err)); |
|
525 |
556 |
526 // Write the attributes & modified time |
557 // Write the attributes & modified time |
527 User::LeaveIfError(iFileHandle.Set(iFixedHeader.iModified, iFixedHeader.iAttributes, KEntryAttNormal)); |
558 err = iFileHandle.Set(iFixedHeader.iModified, iFixedHeader.iAttributes, KEntryAttNormal); |
559 LEAVEIFERROR(err, OstTrace1(TRACE_ERROR, DUP14_CPACKAGEDATATRANSFER_SUPPLYFILEDATAL, "error = %d", err)); |
|
528 |
560 |
529 TInt err = KErrNone; |
561 TInt err = KErrNone; |
530 if (((*iFileName).FindC(KPrimaryBackupRegistrationFile) >= 0) || |
562 if (((*iFileName).FindC(KPrimaryBackupRegistrationFile) >= 0) || |
531 ((*iFileName).MatchC(KSys) >= 0) || |
563 ((*iFileName).MatchC(KSys) >= 0) || |
532 ((*iFileName).MatchC(KResource) >= 0) || |
564 ((*iFileName).MatchC(KResource) >= 0) || |
533 ((*iFileName).MatchC(KImport) >= 0) ) |
565 ((*iFileName).MatchC(KImport) >= 0) ) |
534 { |
566 { |
535 __LOG("CPackageDataTransfer::SupplyFileDataL() - about to call RestoreFileL()"); |
567 OstTrace0(TRACE_NORMAL, DUP10_CPACKAGEDATATRANSFER_SUPPLYFILEDATAL, "about to call RestoreFileL()"); |
536 TRAP(err, iSWIRestore.RestoreFileL(iFileHandle, *iFileName)); |
568 TRAP(err, iSWIRestore.RestoreFileL(iFileHandle, *iFileName)); |
537 __LOG1("CPackageDataTransfer::SupplyFileDataL() - RestoreFileL() - err :%d", err); |
569 OstTrace1(TRACE_NORMAL, DUP11_CPACKAGEDATATRANSFER_SUPPLYFILEDATAL, "RestoreFileL() - err :%d", err); |
538 } |
570 } |
539 else if ((*iFileName).MatchC(KPrivateMatch) >= 0) |
571 else if ((*iFileName).MatchC(KPrivateMatch) >= 0) |
540 { |
572 { |
541 User::LeaveIfError(iFs.MkDirAll((*iFileName))); |
573 err = iFs.MkDirAll((*iFileName)); |
542 User::LeaveIfError(iFileHandle.Rename((*iFileName))); |
574 LEAVEIFERROR(err, OstTrace1(TRACE_ERROR, DUP15_CPACKAGEDATATRANSFER_SUPPLYFILEDATAL, "error = %d", err)); |
575 err = iFileHandle.Rename((*iFileName)); |
|
576 LEAVEIFERROR(err, OstTrace1(TRACE_ERROR, DUP16_CPACKAGEDATATRANSFER_SUPPLYFILEDATAL, "error = %d", err)); |
|
543 } |
577 } |
544 |
578 |
545 |
579 |
546 // Finished reset state |
580 // Finished reset state |
547 iFileHandle.Close(); |
581 iFileHandle.Close(); |
564 } |
598 } |
565 else |
599 else |
566 { |
600 { |
567 TInt fsize = end - current; |
601 TInt fsize = end - current; |
568 TPtr8 ptr(current, fsize, fsize); |
602 TPtr8 ptr(current, fsize, fsize); |
569 User::LeaveIfError(iFileHandle.Write(ptr)); |
603 err = iFileHandle.Write(ptr); |
604 LEAVEIFERROR(err, OstTrace1(TRACE_ERROR, DUP17_CPACKAGEDATATRANSFER_SUPPLYFILEDATAL, "error = %d", err)); |
|
570 break; |
605 break; |
571 } |
606 } |
572 } // while |
607 } // while |
573 |
608 |
574 if (aLastSection && iFileOpen) |
609 if (aLastSection && iFileOpen) |
575 { |
610 { |
611 OstTrace0(TRACE_ERROR, DUP12_CPACKAGEDATATRANSFER_SUPPLYFILEDATAL, "Leave with KErrUnderflow"); |
|
576 User::Leave(KErrUnderflow); |
612 User::Leave(KErrUnderflow); |
577 } // if |
613 } // if |
578 __LOG("CPackageDataTransfer::SupplyFileDataL() - END"); |
614 |
615 OstTraceFunctionExit0( CPACKAGEDATATRANSFER_SUPPLYFILEDATAL_EXIT ); |
|
579 } // SupplyFileDataL |
616 } // SupplyFileDataL |
580 |
617 |
581 void CPackageDataTransfer::SupplyDataL(TDriveNumber aDriveNumber, |
618 void CPackageDataTransfer::SupplyDataL(TDriveNumber aDriveNumber, |
582 TPackageDataType aTransferType, |
619 TPackageDataType aTransferType, |
583 TDesC8& aBuffer, |
620 TDesC8& aBuffer, |
588 @param aTransferType the type of data you require |
625 @param aTransferType the type of data you require |
589 @param aBuffer the buffer to write the data |
626 @param aBuffer the buffer to write the data |
590 @param aLastSection is this the last section |
627 @param aLastSection is this the last section |
591 */ |
628 */ |
592 { |
629 { |
593 __LOG5("CPackageDataTransfer::SupplyDataL() - START - aDrive: %c, aTransferType: %d, iSecureId: 0x%08x, iState.iState: %d, iState.iTransferType: %d", aDriveNumber + 'A', aTransferType, iPackageID.iUid, iState.iState, iState.iTransferType); |
630 OstTraceFunctionEntry0( CPACKAGEDATATRANSFER_SUPPLYDATAL_ENTRY ); |
631 OstTraceExt5(TRACE_NORMAL, CPACKAGEDATATRANSFER_SUPPLYDATAL, "aDrive: %c, aTransferType: %d, iSecureId: 0x%08x, iState.iState: %d, iState.iTransferType: %d", aDriveNumber + 'A', aTransferType, iPackageID.iUid, iState.iState, iState.iTransferType); |
|
594 |
632 |
595 if (!iRestored) |
633 if (!iRestored) |
596 { |
634 { |
597 TInt err = KErrNone; |
635 TInt err = KErrNone; |
598 if (!((iState.iState == ENone) || |
636 if (!((iState.iState == ENone) || |
599 ((iState.iState == ESupply || iState.iState == EBuffer) && (iState.iDriveNumber == aDriveNumber) && |
637 ((iState.iState == ESupply || iState.iState == EBuffer) && (iState.iDriveNumber == aDriveNumber) && |
600 (iState.iTransferType == aTransferType)))) |
638 (iState.iTransferType == aTransferType)))) |
601 { |
639 { |
602 __LOG("CPackageDataTransfer::SupplyDataL() - bad state => ERROR => KErrNotReady"); |
640 OstTrace0(TRACE_ERROR, DUP1_CPACKAGEDATATRANSFER_SUPPLYDATAL, "bad state => ERROR => KErrNotReady"); |
603 User::Leave(KErrNotReady); |
641 User::Leave(KErrNotReady); |
604 } |
642 } |
605 |
643 |
606 // Set the state? |
644 // Set the state? |
607 if (iState.iState == ENone) |
645 if (iState.iState == ENone) |
633 iState.iState = ENone; |
671 iState.iState = ENone; |
634 if (err != KErrAlreadyExists) |
672 if (err != KErrAlreadyExists) |
635 { |
673 { |
636 Cleanup(); |
674 Cleanup(); |
637 iSWIRestore.Close(); |
675 iSWIRestore.Close(); |
638 User::LeaveIfError(iSWIRestore.Connect()); |
676 TInt err1 = iSWIRestore.Connect(); |
639 } |
677 LEAVEIFERROR(err1, OstTrace1(TRACE_ERROR, DUP3_CPACKAGEDATATRANSFER_SUPPLYDATAL, "error = %d", err1)); |
640 __LOG1("CPackageDataTransfer::SupplyDataL() - Left with error: %d", err); |
678 } |
679 OstTrace1(TRACE_ERROR, DUP2_CPACKAGEDATATRANSFER_SUPPLYDATAL, "Left with error: %d", err); |
|
641 User::Leave(err); |
680 User::Leave(err); |
642 } //else |
681 } //else |
643 } |
682 } |
644 |
683 |
645 __LOG("CPackageDataTransfer::SupplyDataL() - END"); |
684 OstTraceFunctionExit0( CPACKAGEDATATRANSFER_SUPPLYDATAL_EXIT ); |
646 |
|
647 } |
685 } |
648 |
686 |
649 void CPackageDataTransfer::DoSupplyDataL(TDriveNumber /*aDriveNumber*/, const TDesC8& aBuffer, TBool aLastSection) |
687 void CPackageDataTransfer::DoSupplyDataL(TDriveNumber /*aDriveNumber*/, const TDesC8& aBuffer, TBool aLastSection) |
650 /** Handles the actual supply of package data |
688 /** Handles the actual supply of package data |
651 |
689 |
652 @param aDriveNumber not used. |
690 @param aDriveNumber not used. |
653 @param aBuffer the data that was supplied |
691 @param aBuffer the data that was supplied |
654 @param aLastSection was this the last section of data |
692 @param aLastSection was this the last section of data |
655 */ |
693 */ |
656 { |
694 { |
657 __LOG3("CPackageDataTransfer::DoSupplyDataL() - START - aBuffer length: %d, aLastSection: %d, iState: %d", aBuffer.Length(), aLastSection, iState.iState); |
695 OstTraceFunctionEntry0( CPACKAGEDATATRANSFER_DOSUPPLYDATAL_ENTRY ); |
658 //__LOGDATA("CPackageDataTransfer::DoSupplyDataL() - %S", aBuffer.Ptr(), Min( aBuffer.Length(), 1024 )); |
696 OstTraceExt3(TRACE_NORMAL, CPACKAGEDATATRANSFER_DOSUPPLYDATAL, "aBuffer length: %d, aLastSection: %d, iState: %d", aBuffer.Length(), aLastSection, iState.iState); |
659 |
697 |
660 TInt currentPos = 0; |
698 TInt currentPos = 0; |
661 const TInt sourceBufferLength = aBuffer.Length(); |
699 const TInt sourceBufferLength = aBuffer.Length(); |
662 |
700 |
663 if ( iState.iState != ESupply ) |
701 if ( iState.iState != ESupply ) |
664 { |
702 { |
665 if (iState.iState == ENone ) |
703 if (iState.iState == ENone ) |
666 { |
704 { |
667 __LOG("CPackageDataTransfer::DoSupplyDataL() - iState == ENone - set up for initial meta data read..."); |
705 OstTrace0(TRACE_NORMAL, DUP1_CPACKAGEDATATRANSFER_DOSUPPLYDATAL, "iState == ENone - set up for initial meta data read..."); |
668 |
706 |
669 // Retrieve metadata and file list from the buffer |
707 // Retrieve metadata and file list from the buffer |
670 ReadData(&iMetaDataSize, aBuffer, sizeof(TInt)); |
708 ReadData(&iMetaDataSize, aBuffer, sizeof(TInt)); |
671 __LOG1("CPackageDataTransfer::DoSupplyDataL() - meta data size: %d", iMetaDataSize); |
709 OstTrace1(TRACE_NORMAL, DUP2_CPACKAGEDATATRANSFER_DOSUPPLYDATAL, "meta data size: %d", iMetaDataSize); |
672 currentPos += sizeof(TInt); |
710 currentPos += sizeof(TInt); |
673 |
711 |
674 if (iMetaDataSize >= (KMaxTInt/2) || iMetaDataSize < 0) |
712 if (iMetaDataSize >= (KMaxTInt/2) || iMetaDataSize < 0) |
675 { |
713 { |
676 __LOG("CPackageDataTransfer::DoSupplyDataL() - size read is too big"); |
714 OstTrace0(TRACE_ERROR, DUP3_CPACKAGEDATATRANSFER_DOSUPPLYDATAL, "size read is too big"); |
677 User::Leave(KErrCorrupt); |
715 User::Leave(KErrCorrupt); |
678 } |
716 } |
679 |
717 |
680 __LOG1("CPackageDataTransfer::DoSupplyDataL() - creating meta data buffer of length: %d bytes", iMetaDataSize); |
718 OstTrace1(TRACE_NORMAL, DUP4_CPACKAGEDATATRANSFER_DOSUPPLYDATAL, "creating meta data buffer of length: %d bytes", iMetaDataSize); |
681 HBufC8* metaDataBuffer = HBufC8::NewL(iMetaDataSize); |
719 HBufC8* metaDataBuffer = HBufC8::NewL(iMetaDataSize); |
682 delete iMetaData; |
720 delete iMetaData; |
683 iMetaData = metaDataBuffer; |
721 iMetaData = metaDataBuffer; |
684 TPtr8 data(iMetaData->Des()); |
722 TPtr8 data(iMetaData->Des()); |
685 |
723 |
686 if (iMetaDataSize > sourceBufferLength ) |
724 if (iMetaDataSize > sourceBufferLength ) |
687 { |
725 { |
688 __LOG("CPackageDataTransfer::DoSupplyDataL() - not enough source data to obtain entire meta data in one pass..."); |
726 OstTrace0(TRACE_NORMAL, DUP5_CPACKAGEDATATRANSFER_DOSUPPLYDATAL, "not enough source data to obtain entire meta data in one pass..."); |
689 |
727 |
690 if (aLastSection) |
728 if (aLastSection) |
691 { |
729 { |
692 __LOG("CPackageDataTransfer::DoSupplyDataL() - Underflow1"); |
730 OstTrace0(TRACE_ERROR, DUP6_CPACKAGEDATATRANSFER_DOSUPPLYDATAL, "Underflow1"); |
693 User::Leave(KErrUnderflow); |
731 User::Leave(KErrUnderflow); |
694 } |
732 } |
695 else |
733 else |
696 { |
734 { |
697 data.Append(aBuffer.Mid(currentPos)); |
735 data.Append(aBuffer.Mid(currentPos)); |
698 iState.iState = EBuffer; |
736 iState.iState = EBuffer; |
699 __LOG2("CPackageDataTransfer::DoSupplyDataL() - got %d bytes of meta data (%d bytes remaining) => changing state to EBuffer", data.Length(), iMetaDataSize - data.Length() ); |
737 OstTraceExt2(TRACE_NORMAL, DUP7_CPACKAGEDATATRANSFER_DOSUPPLYDATAL, "got %d bytes of meta data (%d bytes remaining) => changing state to EBuffer", data.Length(), iMetaDataSize - data.Length() ); |
700 } |
738 } |
701 } |
739 } |
702 else |
740 else |
703 { |
741 { |
704 __LOG("CPackageDataTransfer::DoSupplyDataL() - able to read entire meta data buffer in a single pass... "); |
742 OstTrace0(TRACE_NORMAL, DUP8_CPACKAGEDATATRANSFER_DOSUPPLYDATAL, "able to read entire meta data buffer in a single pass... "); |
705 data.Append(aBuffer.Mid(currentPos, iMetaDataSize)); |
743 data.Append(aBuffer.Mid(currentPos, iMetaDataSize)); |
706 currentPos += iMetaDataSize; |
744 currentPos += iMetaDataSize; |
707 } |
745 } |
708 } |
746 } |
709 else if (iState.iState == EBuffer) |
747 else if (iState.iState == EBuffer) |
710 { |
748 { |
711 __LOG1("CPackageDataTransfer::DoSupplyDataL() - iState == EBuffer, iMetaData length: %d", iMetaData->Length()); |
749 OstTrace1(TRACE_NORMAL, DUP9_CPACKAGEDATATRANSFER_DOSUPPLYDATAL, "iState == EBuffer, iMetaData length: %d", iMetaData->Length()); |
712 TPtr8 ptr( iMetaData->Des() ); |
750 TPtr8 ptr( iMetaData->Des() ); |
713 const TInt leftToRead = iMetaDataSize - ptr.Length(); |
751 const TInt leftToRead = iMetaDataSize - ptr.Length(); |
714 __LOG1("CPackageDataTransfer::DoSupplyDataL() - meta data buffer left to read: %d", leftToRead); |
752 OstTrace1(TRACE_NORMAL, DUP10_CPACKAGEDATATRANSFER_DOSUPPLYDATAL, "meta data buffer left to read: %d", leftToRead); |
715 |
753 |
716 if (sourceBufferLength < leftToRead) |
754 if (sourceBufferLength < leftToRead) |
717 { |
755 { |
718 __LOG("CPackageDataTransfer::DoSupplyDataL() - not enough source data to obtain remaining required meta data in this pass..."); |
756 OstTrace0(TRACE_NORMAL, DUP11_CPACKAGEDATATRANSFER_DOSUPPLYDATAL, "not enough source data to obtain remaining required meta data in this pass..."); |
719 |
757 |
720 if (aLastSection) |
758 if (aLastSection) |
721 { |
759 { |
722 __LOG("CPackageDataTransfer::DoSupplyDataL() - Underflow2"); |
760 OstTrace0(TRACE_ERROR, DUP12_CPACKAGEDATATRANSFER_DOSUPPLYDATAL, "Underflow2"); |
723 User::Leave(KErrUnderflow); |
761 User::Leave(KErrUnderflow); |
724 } |
762 } |
725 |
763 |
726 ptr.Append(aBuffer); |
764 ptr.Append(aBuffer); |
727 __LOG1("CPackageDataTransfer::DoSupplyDataL() - meta data buffered again: %d", ptr.Length()); |
765 OstTrace1(TRACE_NORMAL, DUP13_CPACKAGEDATATRANSFER_DOSUPPLYDATAL, "meta data buffered again: %d", ptr.Length()); |
728 iState.iState = EBuffer; |
766 iState.iState = EBuffer; |
767 OstTraceFunctionExit0( CPACKAGEDATATRANSFER_DOSUPPLYDATAL_EXIT ); |
|
729 return; |
768 return; |
730 } |
769 } |
731 else |
770 else |
732 { |
771 { |
733 __LOG("CPackageDataTransfer::DoSupplyDataL() - able to complete meta data read in this pass..."); |
772 OstTrace0(TRACE_NORMAL, DUP14_CPACKAGEDATATRANSFER_DOSUPPLYDATAL, "able to complete meta data read in this pass..."); |
734 ptr.Append( aBuffer.Left(leftToRead) ); |
773 ptr.Append( aBuffer.Left(leftToRead) ); |
735 __LOG1("CPackageDataTransfer::DoSupplyDataL() - meta data finished buffering, meta data size is now: %d", ptr.Length()); |
774 OstTrace1(TRACE_NORMAL, DUP15_CPACKAGEDATATRANSFER_DOSUPPLYDATAL, "meta data finished buffering, meta data size is now: %d", ptr.Length()); |
736 currentPos += leftToRead; |
775 currentPos += leftToRead; |
737 } |
776 } |
738 } |
777 } |
739 |
778 |
740 const TBool metaDataComplete = ( iMetaData->Length() == iMetaDataSize ); |
779 const TBool metaDataComplete = ( iMetaData->Length() == iMetaDataSize ); |
741 __LOG4("CPackageDataTransfer::DoSupplyDataL() - meta data complete?: %d ( %d bytes remaining out of total: %d with current length of: %d)", metaDataComplete, iMetaDataSize - iMetaData->Length(), iMetaDataSize, iMetaData->Length() ); |
780 OstTraceExt4(TRACE_NORMAL, DUP16_CPACKAGEDATATRANSFER_DOSUPPLYDATAL, "meta data complete?: %d ( %d bytes remaining out of total: %d with current length of: %d)", metaDataComplete, iMetaDataSize - iMetaData->Length(), iMetaDataSize, iMetaData->Length() ); |
742 |
781 |
743 if ( metaDataComplete ) |
782 if ( metaDataComplete ) |
744 { |
783 { |
745 __LOG("CPackageDataTransfer::DoSupplyDataL() - Asking SWI to start a package..."); |
784 OstTrace0(TRACE_NORMAL, DUP17_CPACKAGEDATATRANSFER_DOSUPPLYDATAL, "Asking SWI to start a package..."); |
746 iState.iState = ESupply; |
785 iState.iState = ESupply; |
747 iSWIRestore.StartPackageL(iPackageID, *iMetaData); |
786 iSWIRestore.StartPackageL(iPackageID, *iMetaData); |
748 __LOG("CPackageDataTransfer::DoSupplyDataL() - SWI StartPackageL() completed OK"); |
787 OstTrace0(TRACE_NORMAL, DUP18_CPACKAGEDATATRANSFER_DOSUPPLYDATAL, "SWI StartPackageL() completed OK"); |
749 } |
788 } |
750 } |
789 } |
751 |
790 |
752 if ( iState.iState == ESupply ) |
791 if ( iState.iState == ESupply ) |
753 { |
792 { |
754 __LOG1("CPackageDataTransfer::DoSupplyDataL() - iState == ESupply, currentPos: %d", currentPos); |
793 OstTrace1(TRACE_NORMAL, DUP19_CPACKAGEDATATRANSFER_DOSUPPLYDATAL, "iState == ESupply, currentPos: %d", currentPos); |
755 |
794 |
756 // Now restore each file and commit the changes |
795 // Now restore each file and commit the changes |
757 const TPtrC8 ptr( aBuffer.Mid( currentPos ) ); |
796 const TPtrC8 ptr( aBuffer.Mid( currentPos ) ); |
758 //__LOGDATA("CPackageDataTransfer::DoSupplyDataL() - for supplyFileData %S", ptr.Ptr(), Min( ptr.Length(), 1024 )); |
|
759 |
797 |
760 SupplyFileDataL(ptr, aLastSection); |
798 SupplyFileDataL(ptr, aLastSection); |
761 __LOG("CPackageDataTransfer::DoSupplyDataL() - SupplyFileDataL() completed OK"); |
799 OstTrace0(TRACE_NORMAL, DUP20_CPACKAGEDATATRANSFER_DOSUPPLYDATAL, "SupplyFileDataL() completed OK"); |
762 |
800 |
763 if (aLastSection) |
801 if (aLastSection) |
764 { |
802 { |
765 __LOG("CPackageDataTransfer::DoSupplyDataL() - aLastSection - asking SWI to commit package..."); |
803 OstTrace0(TRACE_NORMAL, DUP21_CPACKAGEDATATRANSFER_DOSUPPLYDATAL, "aLastSection - asking SWI to commit package..."); |
766 // now we can finalise the restore |
804 // now we can finalise the restore |
767 iSWIRestore.CommitPackageL(); |
805 iSWIRestore.CommitPackageL(); |
768 __LOG("CPackageDataTransfer::DoSupplyDataL() - Package commited OK"); |
806 OstTrace0(TRACE_NORMAL, DUP22_CPACKAGEDATATRANSFER_DOSUPPLYDATAL, "Package commited OK"); |
769 iRestored = ETrue; |
807 iRestored = ETrue; |
770 iState.iState = ENone; |
808 iState.iState = ENone; |
771 |
809 |
772 Cleanup(); |
810 Cleanup(); |
773 iSWIRestore.Close(); |
811 iSWIRestore.Close(); |
774 User::LeaveIfError(iSWIRestore.Connect()); |
812 TInt err = iSWIRestore.Connect(); |
813 LEAVEIFERROR(err, OstTrace1(TRACE_ERROR, DUP23_CPACKAGEDATATRANSFER_DOSUPPLYDATAL, "error = %d", err)); |
|
775 } |
814 } |
776 } |
815 } |
777 |
816 |
778 __LOG("CPackageDataTransfer::DoSupplyDataL() - END"); |
817 OstTraceFunctionExit0( DUP1_CPACKAGEDATATRANSFER_DOSUPPLYDATAL_EXIT ); |
779 } // SupplyDataL |
818 } // SupplyDataL |
780 |
819 |
781 void CPackageDataTransfer::SupplySnapshotL(TDriveNumber aDriveNumber, const TDesC8& aBuffer, TBool aLastSection) |
820 void CPackageDataTransfer::SupplySnapshotL(TDriveNumber aDriveNumber, const TDesC8& aBuffer, TBool aLastSection) |
782 /** Handles the actual supply of snapshot data |
821 /** Handles the actual supply of snapshot data |
783 |
822 |
784 @param aDriveNumber the drive the snapshot is for |
823 @param aDriveNumber the drive the snapshot is for |
785 @param aBuffer the data that was supplied |
824 @param aBuffer the data that was supplied |
786 @param aLastSection was this the last section of data |
825 @param aLastSection was this the last section of data |
787 */ |
826 */ |
788 { |
827 { |
789 __LOG("CPackageDataTransfer::SupplySnapshotL() - START"); |
828 OstTraceFunctionEntry0( CPACKAGEDATATRANSFER_SUPPLYSNAPSHOTL_ENTRY ); |
829 |
|
790 TInt err = KErrNone; |
830 TInt err = KErrNone; |
791 if (iBufferSnapshotReader == NULL) |
831 if (iBufferSnapshotReader == NULL) |
792 { |
832 { |
793 CSnapshotHolder* snapshot = CSnapshotHolder::NewL(); |
833 CSnapshotHolder* snapshot = CSnapshotHolder::NewL(); |
794 delete iSnapshot; |
834 delete iSnapshot; |
806 if ((err != KErrNone) || aLastSection) |
846 if ((err != KErrNone) || aLastSection) |
807 { |
847 { |
808 delete iBufferSnapshotReader; |
848 delete iBufferSnapshotReader; |
809 iBufferSnapshotReader = NULL; |
849 iBufferSnapshotReader = NULL; |
810 |
850 |
811 User::LeaveIfError(err); |
851 LEAVEIFERROR(err, OstTrace1(TRACE_ERROR, CPACKAGEDATATRANSFER_SUPPLYSNAPSHOTL, "error = %d", err)); |
812 } // if |
852 } // if |
813 __LOG("CPackageDataTransfer::SupplySnapshotL() - END"); |
853 |
854 OstTraceFunctionExit0( CPACKAGEDATATRANSFER_SUPPLYSNAPSHOTL_EXIT ); |
|
814 } |
855 } |
815 |
856 |
816 void CPackageDataTransfer::DoRequestDataL(TDriveNumber aDriveNumber, TPtr8& aBuffer, TBool& aLastSection) |
857 void CPackageDataTransfer::DoRequestDataL(TDriveNumber aDriveNumber, TPtr8& aBuffer, TBool& aLastSection) |
817 /** Handles the actual request for package data |
858 /** Handles the actual request for package data |
818 |
859 |
821 @param aLastSection has all the data been supplied. If all data is not |
862 @param aLastSection has all the data been supplied. If all data is not |
822 supplied a further calls to the function will return the extra |
863 supplied a further calls to the function will return the extra |
823 data. |
864 data. |
824 */ |
865 */ |
825 { |
866 { |
826 __LOG3("CPackageDataTransfer::DoRequestDataL() - START - iState: %d, iMetaData length: %d, iMetaDataSize: %d", iState.iState, iMetaData->Length(), iMetaDataSize); |
867 OstTraceFunctionEntry0( CPACKAGEDATATRANSFER_DOREQUESTDATAL_ENTRY ); |
868 OstTraceExt3(TRACE_NORMAL, CPACKAGEDATATRANSFER_DOREQUESTDATAL, "iState: %d, iMetaData length: %d, iMetaDataSize: %d", iState.iState, iMetaData->Length(), iMetaDataSize); |
|
827 |
869 |
828 if (iState.iState == ENone || iState.iState == EBuffer) |
870 if (iState.iState == ENone || iState.iState == EBuffer) |
829 { |
871 { |
830 if (!IsDataOnDrive(aDriveNumber)) |
872 if (!IsDataOnDrive(aDriveNumber)) |
831 { |
873 { |
832 aLastSection = ETrue; |
874 aLastSection = ETrue; |
833 __LOG("CPackageDataTransfer::DoRequestDataL() - END - no data on drive"); |
875 OstTrace0(TRACE_NORMAL, DUP1_CPACKAGEDATATRANSFER_DOREQUESTDATAL, "no data on drive"); |
834 //__LOGDATA("CPackageDataTransfer::DoRequestDataL() - %S", aBuffer.Ptr(), aBuffer.Length()); |
876 OstTraceFunctionExit0( CPACKAGEDATATRANSFER_DOREQUESTDATAL_EXIT ); |
835 return; |
877 return; |
836 } |
878 } |
837 |
879 |
838 |
880 |
839 // Now write the meta data to the buffer. |
881 // Now write the meta data to the buffer. |
840 const TInt KSizeOfTInt = sizeof(TInt); |
882 const TInt KSizeOfTInt = sizeof(TInt); |
841 const TInt availableBuffer = aBuffer.MaxSize() - aBuffer.Size(); |
883 const TInt availableBuffer = aBuffer.MaxSize() - aBuffer.Size(); |
842 __LOG1("CPackageDataTransfer::DoRequestDataL() - available Buffer %d", availableBuffer); |
884 OstTrace1(TRACE_NORMAL, DUP2_CPACKAGEDATATRANSFER_DOREQUESTDATAL, "available Buffer %d", availableBuffer); |
843 |
885 |
844 if (iState.iState == ENone) |
886 if (iState.iState == ENone) |
845 { |
887 { |
846 if ((availableBuffer - KSizeOfTInt) >= iMetaDataSize) |
888 if ((availableBuffer - KSizeOfTInt) >= iMetaDataSize) |
847 { |
889 { |
848 __LOG("CPackageDataTransfer::DoRequestDataL() - iState = ENone - can write entire meta data in single pass..."); |
890 OstTrace0(TRACE_NORMAL, DUP3_CPACKAGEDATATRANSFER_DOREQUESTDATAL, "iState = ENone - can write entire meta data in single pass..."); |
849 |
891 |
850 WriteData(&iMetaDataSize, aBuffer, KSizeOfTInt); |
892 WriteData(&iMetaDataSize, aBuffer, KSizeOfTInt); |
851 aBuffer.Append(*iMetaData); |
893 aBuffer.Append(*iMetaData); |
852 |
894 |
853 __LOG1("CPackageDataTransfer::DoRequestDataL() - iState = ENone - Written Meta Data, size %d", iMetaDataSize); |
895 OstTrace1(TRACE_NORMAL, DUP4_CPACKAGEDATATRANSFER_DOREQUESTDATAL, "iState = ENone - Written Meta Data, size %d", iMetaDataSize); |
854 } |
896 } |
855 else if (availableBuffer - KSizeOfTInt > 0) |
897 else if (availableBuffer - KSizeOfTInt > 0) |
856 { |
898 { |
857 // can we write metasize and something else? |
899 // can we write metasize and something else? |
858 __LOG("CPackageDataTransfer::DoRequestDataL() - iState = ENone - have room for some meta data (not all)..."); |
900 OstTrace0(TRACE_NORMAL, DUP5_CPACKAGEDATATRANSFER_DOREQUESTDATAL, "iState = ENone - have room for some meta data (not all)..."); |
859 |
901 |
860 WriteData(&iMetaDataSize, aBuffer, KSizeOfTInt); |
902 WriteData(&iMetaDataSize, aBuffer, KSizeOfTInt); |
861 |
903 |
862 // Write as much meta data as we can (allowing for buffer size) in this pass. |
904 // Write as much meta data as we can (allowing for buffer size) in this pass. |
863 const TInt amountOfMetaDataToWrite = availableBuffer - KSizeOfTInt; |
905 const TInt amountOfMetaDataToWrite = availableBuffer - KSizeOfTInt; |
866 // need to get rid of KSizeOfTInt |
908 // need to get rid of KSizeOfTInt |
867 iMetaDataLeft = iMetaDataSize - amountOfMetaDataToWrite; |
909 iMetaDataLeft = iMetaDataSize - amountOfMetaDataToWrite; |
868 aLastSection = EFalse; |
910 aLastSection = EFalse; |
869 |
911 |
870 iState.iState = EBuffer; |
912 iState.iState = EBuffer; |
871 __LOG2("CPackageDataTransfer::DoRequestDataL() - END - iState = ENone - Written MetaData %d, left %d", amountOfMetaDataToWrite, iMetaDataLeft); |
913 OstTraceExt2(TRACE_NORMAL, DUP6_CPACKAGEDATATRANSFER_DOREQUESTDATAL, "iState = ENone - Written MetaData %d, left %d", amountOfMetaDataToWrite, iMetaDataLeft); |
914 OstTraceFunctionExit0( DUP1_CPACKAGEDATATRANSFER_DOREQUESTDATAL_EXIT ); |
|
872 return; |
915 return; |
873 } |
916 } |
874 else |
917 else |
875 { |
918 { |
876 __LOG("CPackageDataTransfer::DoRequestDataL() - END - iState = ENone - not enough space to write MetaData, Return for more"); |
919 OstTrace0(TRACE_NORMAL, DUP7_CPACKAGEDATATRANSFER_DOREQUESTDATAL, "iState = ENone - not enough space to write MetaData, Return for more"); |
920 OstTraceFunctionExit0( DUP2_CPACKAGEDATATRANSFER_DOREQUESTDATAL_EXIT ); |
|
877 return; |
921 return; |
878 } |
922 } |
879 }// if |
923 }// if |
880 else if (iState.iState == EBuffer) |
924 else if (iState.iState == EBuffer) |
881 { |
925 { |
882 if (availableBuffer - iMetaDataLeft >= 0) |
926 if (availableBuffer - iMetaDataLeft >= 0) |
883 { |
927 { |
884 const TInt readPosition = iMetaDataSize - iMetaDataLeft; |
928 const TInt readPosition = iMetaDataSize - iMetaDataLeft; |
885 __LOG2("CPackageDataTransfer::DoRequestDataL() - iState = EBuffer - enough space for remaining meta data in this pass, size %d, readPos: %d", iMetaDataLeft, readPosition); |
929 OstTraceExt2(TRACE_NORMAL, DUP8_CPACKAGEDATATRANSFER_DOREQUESTDATAL, "iState = EBuffer - enough space for remaining meta data in this pass, size %d, readPos: %d", iMetaDataLeft, readPosition); |
886 aBuffer.Append(iMetaData->Mid(readPosition)); |
930 aBuffer.Append(iMetaData->Mid(readPosition)); |
887 } |
931 } |
888 else |
932 else |
889 { |
933 { |
890 // continute buffer |
934 // continute buffer |
891 const TInt readPosition = iMetaDataSize - iMetaDataLeft; |
935 const TInt readPosition = iMetaDataSize - iMetaDataLeft; |
892 __LOG2("CPackageDataTransfer::DoRequestDataL() - iState = EBuffer - Still buffering Meta Data, Left to write %d, readPos: %d", iMetaDataLeft, readPosition); |
936 OstTraceExt2(TRACE_NORMAL, DUP9_CPACKAGEDATATRANSFER_DOREQUESTDATAL, "iState = EBuffer - Still buffering Meta Data, Left to write %d, readPos: %d", iMetaDataLeft, readPosition); |
893 |
937 |
894 aBuffer.Append(iMetaData->Mid(readPosition, availableBuffer)); |
938 aBuffer.Append(iMetaData->Mid(readPosition, availableBuffer)); |
895 iMetaDataLeft -= availableBuffer; |
939 iMetaDataLeft -= availableBuffer; |
896 aLastSection = EFalse; |
940 aLastSection = EFalse; |
897 |
941 |
898 __LOG1("CPackageDataTransfer::DoRequestDataL() - iState = EBuffer - END - Still buffering Meta Data, Left to write %d", iMetaDataLeft); |
942 OstTrace1(TRACE_NORMAL, DUP10_CPACKAGEDATATRANSFER_DOREQUESTDATAL, "iState = EBuffer - END - Still buffering Meta Data, Left to write %d", iMetaDataLeft); |
943 OstTraceFunctionExit0( DUP3_CPACKAGEDATATRANSFER_DOREQUESTDATAL_EXIT ); |
|
899 return; |
944 return; |
900 } |
945 } |
901 } |
946 } |
902 |
947 |
903 TUint count = iFiles.Count(); |
948 TUint count = iFiles.Count(); |
904 __LOG1("CPackageDataTransfer::DoRequestDataL() - No of fileNames: %d", count); |
949 OstTrace1(TRACE_NORMAL, DUP11_CPACKAGEDATATRANSFER_DOREQUESTDATAL, "No of fileNames: %d", count); |
905 |
950 |
906 if (count == 0) |
951 if (count == 0) |
907 { |
952 { |
908 aLastSection = ETrue; |
953 aLastSection = ETrue; |
909 __LOG("CPackageDataTransfer::DoRequestDataL() - END - no files"); |
954 OstTrace0(TRACE_NORMAL, DUP12_CPACKAGEDATATRANSFER_DOREQUESTDATAL, "no files"); |
955 OstTraceFunctionExit0( DUP4_CPACKAGEDATATRANSFER_DOREQUESTDATAL_EXIT ); |
|
910 return; |
956 return; |
911 } |
957 } |
912 |
958 |
913 CDesCArray* files = new (ELeave) CDesCArrayFlat(KDesCArrayGranularity); |
959 CDesCArray* files = new (ELeave) CDesCArrayFlat(KDesCArrayGranularity); |
914 CleanupStack::PushL(files); |
960 CleanupStack::PushL(files); |
916 { |
962 { |
917 files->AppendL(*iFiles[i]); |
963 files->AppendL(*iFiles[i]); |
918 } |
964 } |
919 |
965 |
920 |
966 |
921 __LOG("CPackageDataTransfer::DoRequestDataL() - starting buffer file writer..."); |
967 OstTrace0(TRACE_NORMAL, DUP13_CPACKAGEDATATRANSFER_DOREQUESTDATAL, "starting buffer file writer..."); |
922 CBufferFileWriter* bufferFileWriter = CBufferFileWriter::NewL(iFs, files); |
968 CBufferFileWriter* bufferFileWriter = CBufferFileWriter::NewL(iFs, files); |
923 delete iBufferFileWriter; |
969 delete iBufferFileWriter; |
924 iBufferFileWriter = bufferFileWriter; |
970 iBufferFileWriter = bufferFileWriter; |
925 |
971 |
926 iBufferFileWriter->StartL(aBuffer, aLastSection); |
972 iBufferFileWriter->StartL(aBuffer, aLastSection); |
927 iState.iState = ERequest; |
973 iState.iState = ERequest; |
928 __LOG("CPackageDataTransfer::DoRequestDataL() - iState is now ERequest"); |
974 OstTrace0(TRACE_NORMAL, DUP14_CPACKAGEDATATRANSFER_DOREQUESTDATAL, "iState is now ERequest"); |
929 |
975 |
930 if (aLastSection) |
976 if (aLastSection) |
931 { |
977 { |
932 delete iBufferFileWriter; |
978 delete iBufferFileWriter; |
933 iBufferFileWriter = NULL; |
979 iBufferFileWriter = NULL; |
936 |
982 |
937 CleanupStack::Pop(files); |
983 CleanupStack::Pop(files); |
938 } |
984 } |
939 else if (iBufferFileWriter != NULL) |
985 else if (iBufferFileWriter != NULL) |
940 { |
986 { |
941 __LOG("CPackageDataTransfer::DoRequestDataL() - continuing buffer file writer from last time..."); |
987 OstTrace0(TRACE_NORMAL, DUP15_CPACKAGEDATATRANSFER_DOREQUESTDATAL, "continuing buffer file writer from last time..."); |
942 iBufferFileWriter->ContinueL(aBuffer, aLastSection); |
988 iBufferFileWriter->ContinueL(aBuffer, aLastSection); |
943 if (aLastSection) |
989 if (aLastSection) |
944 { |
990 { |
945 delete iBufferFileWriter; |
991 delete iBufferFileWriter; |
946 iBufferFileWriter = NULL; |
992 iBufferFileWriter = NULL; |
947 iState.iState = ENone; |
993 iState.iState = ENone; |
948 } |
994 } |
949 } |
995 } |
950 |
996 |
951 //__LOGDATA("CPackageDataTransfer::DoRequestDataL() - %S", aBuffer.Ptr(), aBuffer.Length()); |
997 OstTraceFunctionExit0( DUP5_CPACKAGEDATATRANSFER_DOREQUESTDATAL_EXIT ); |
952 __LOG("CPackageDataTransfer::DoRequestDataL() - END"); |
|
953 } // RequestDataL |
998 } // RequestDataL |
954 |
999 |
955 void CPackageDataTransfer::RequestSnapshotL(TDriveNumber aDriveNumber, TPtr8& aBuffer, TBool& aLastSection) |
1000 void CPackageDataTransfer::RequestSnapshotL(TDriveNumber aDriveNumber, TPtr8& aBuffer, TBool& aLastSection) |
956 /** Handles the request for snapshot data |
1001 /** Handles the request for snapshot data |
957 |
1002 |
960 @param aLastSection has all the data been supplied. If all data is not |
1005 @param aLastSection has all the data been supplied. If all data is not |
961 supplied a further calls to the function will return the extra |
1006 supplied a further calls to the function will return the extra |
962 data. |
1007 data. |
963 */ |
1008 */ |
964 { |
1009 { |
965 __LOG("CPackageDataTransfer::RequestSnapshotL() - START"); |
1010 OstTraceFunctionEntry0( CPACKAGEDATATRANSFER_REQUESTSNAPSHOTL_ENTRY ); |
1011 |
|
966 if (iBufferSnapshotWriter == NULL) |
1012 if (iBufferSnapshotWriter == NULL) |
967 { |
1013 { |
968 if (!IsDataOnDrive(aDriveNumber)) |
1014 if (!IsDataOnDrive(aDriveNumber)) |
969 { |
1015 { |
970 aLastSection = ETrue; |
1016 aLastSection = ETrue; |
1017 OstTraceFunctionExit0( CPACKAGEDATATRANSFER_REQUESTSNAPSHOTL_EXIT ); |
|
971 return; |
1018 return; |
972 } |
1019 } |
973 |
1020 |
974 TUint count = iFiles.Count(); |
1021 TUint count = iFiles.Count(); |
975 __LOG1("CPackageDataTransfer::RequestSnapshotL() - No of fileNames: %d", count); |
1022 OstTrace1(TRACE_NORMAL, CPACKAGEDATATRANSFER_REQUESTSNAPSHOTL, "No of fileNames: %d", count); |
976 if (count > 0) |
1023 if (count > 0) |
977 { |
1024 { |
978 RSnapshots* snapshots = new(ELeave) RSnapshots(); |
1025 RSnapshots* snapshots = new(ELeave) RSnapshots(); |
979 TCleanupItem cleanup(CleanupRPointerArray, snapshots); |
1026 TCleanupItem cleanup(CleanupRPointerArray, snapshots); |
980 CleanupStack::PushL(cleanup); |
1027 CleanupStack::PushL(cleanup); |
1019 if (aLastSection) |
1066 if (aLastSection) |
1020 { |
1067 { |
1021 delete iBufferSnapshotWriter; |
1068 delete iBufferSnapshotWriter; |
1022 iBufferSnapshotWriter = NULL; |
1069 iBufferSnapshotWriter = NULL; |
1023 } |
1070 } |
1024 __LOG("CPackageDataTransfer::RequestSnapshotL() - END"); |
1071 OstTraceFunctionExit0( DUP1_CPACKAGEDATATRANSFER_REQUESTSNAPSHOTL_EXIT ); |
1025 } |
1072 } |
1026 |
1073 |
1027 |
1074 |
1028 /** Cleanup of the internal data |
1075 /** Cleanup of the internal data |
1029 */ |
1076 */ |
1030 void CPackageDataTransfer::Cleanup() |
1077 void CPackageDataTransfer::Cleanup() |
1031 { |
1078 { |
1079 OstTraceFunctionEntry0( CPACKAGEDATATRANSFER_CLEANUP_ENTRY ); |
|
1032 delete iBufferFileWriter; |
1080 delete iBufferFileWriter; |
1033 iBufferFileWriter = NULL; |
1081 iBufferFileWriter = NULL; |
1034 delete iBufferSnapshotReader; |
1082 delete iBufferSnapshotReader; |
1035 iBufferSnapshotReader = NULL; |
1083 iBufferSnapshotReader = NULL; |
1036 delete iBufferSnapshotWriter; |
1084 delete iBufferSnapshotWriter; |
1037 iBufferSnapshotWriter = NULL; |
1085 iBufferSnapshotWriter = NULL; |
1038 delete iSnapshot; |
1086 delete iSnapshot; |
1039 iSnapshot = NULL; |
1087 iSnapshot = NULL; |
1040 delete iMetaData; |
1088 delete iMetaData; |
1041 iMetaData = NULL; |
1089 iMetaData = NULL; |
1090 OstTraceFunctionExit0( CPACKAGEDATATRANSFER_CLEANUP_EXIT ); |
|
1042 } |
1091 } |
1043 |
1092 |
1044 /** |
1093 /** |
1045 Checks if there is any data on the specified drive |
1094 Checks if there is any data on the specified drive |
1046 |
1095 |
1047 @param aDrive the drive to check on |
1096 @param aDrive the drive to check on |
1048 @return ETrue if there is any data |
1097 @return ETrue if there is any data |
1049 */ |
1098 */ |
1050 TBool CPackageDataTransfer::IsDataOnDrive(TDriveNumber aDrive) |
1099 TBool CPackageDataTransfer::IsDataOnDrive(TDriveNumber aDrive) |
1051 { |
1100 { |
1101 OstTraceFunctionEntry0( CPACKAGEDATATRANSFER_ISDATAONDRIVE_ENTRY ); |
|
1052 if (!iDriveList[aDrive]) |
1102 if (!iDriveList[aDrive]) |
1053 { |
1103 { |
1104 OstTraceFunctionExit0( CPACKAGEDATATRANSFER_ISDATAONDRIVE_EXIT ); |
|
1054 return EFalse; |
1105 return EFalse; |
1055 } |
1106 } |
1056 else |
1107 else |
1057 { |
1108 { |
1109 OstTraceFunctionExit0( DUP1_CPACKAGEDATATRANSFER_ISDATAONDRIVE_EXIT ); |
|
1058 return ETrue; |
1110 return ETrue; |
1059 } |
1111 } |
1060 |
1112 |
1061 } |
1113 } |
1062 |
1114 |
1066 @pre CPackageDataTransfer::ParseFilesL() must have been called |
1118 @pre CPackageDataTransfer::ParseFilesL() must have been called |
1067 @return the common settings of the data owner |
1119 @return the common settings of the data owner |
1068 @leave KErrNotReady if CPackageDataTransfer::ParseFilesL() not called |
1120 @leave KErrNotReady if CPackageDataTransfer::ParseFilesL() not called |
1069 */ |
1121 */ |
1070 { |
1122 { |
1123 OstTraceFunctionEntry0( CPACKAGEDATATRANSFER_COMMONSETTINGSL_ENTRY ); |
|
1071 TCommonBURSettings settings = ENoOptions; |
1124 TCommonBURSettings settings = ENoOptions; |
1072 |
1125 |
1073 __LOG1("CPackageDataTransfer::CommonSettingsL() - System Supported: %d", iSystemInformation.iSupported); |
1126 OstTrace1(TRACE_NORMAL, CPACKAGEDATATRANSFER_COMMONSETTINGSL, "System Supported: %d", iSystemInformation.iSupported); |
1074 if (iSystemInformation.iSupported) |
1127 if (iSystemInformation.iSupported) |
1075 { |
1128 { |
1076 settings |= EHasSystemFiles; |
1129 settings |= EHasSystemFiles; |
1077 } |
1130 } |
1078 |
1131 |
1132 OstTraceFunctionExit0( CPACKAGEDATATRANSFER_COMMONSETTINGSL_EXIT ); |
|
1079 return settings; |
1133 return settings; |
1080 } |
1134 } |
1081 |
1135 |
1082 TPassiveBURSettings CPackageDataTransfer::PassiveSettingsL() |
1136 TPassiveBURSettings CPackageDataTransfer::PassiveSettingsL() |
1083 /** Get the passive settings of the data owner |
1137 /** Get the passive settings of the data owner |
1085 @pre CPackageDataTransfer::ParseFilesL() must have been called |
1139 @pre CPackageDataTransfer::ParseFilesL() must have been called |
1086 @return the passive settings of the data owner |
1140 @return the passive settings of the data owner |
1087 @leave KErrNotReady if CPackageDataTransfer::ParseFilesL() not called |
1141 @leave KErrNotReady if CPackageDataTransfer::ParseFilesL() not called |
1088 */ |
1142 */ |
1089 { |
1143 { |
1090 __LOG1("CPackageDataTransfer::CommonSettingsL() - Public Supported: %d", iPublicInformation.iSupported); |
1144 OstTraceFunctionEntry0( CPACKAGEDATATRANSFER_PASSIVESETTINGSL_ENTRY ); |
1145 OstTrace1(TRACE_NORMAL, CPACKAGEDATATRANSFER_PASSIVESETTINGSL, "Public Supported: %d", iPublicInformation.iSupported); |
|
1091 |
1146 |
1092 TPassiveBURSettings settings = ENoPassiveOptions; |
1147 TPassiveBURSettings settings = ENoPassiveOptions; |
1093 |
1148 |
1094 if (iPublicInformation.iSupported) |
1149 if (iPublicInformation.iSupported) |
1095 { |
1150 { |
1096 settings |= EHasPublicFiles; |
1151 settings |= EHasPublicFiles; |
1097 } // if |
1152 } // if |
1098 |
1153 |
1099 |
1154 |
1155 OstTraceFunctionExit0( CPACKAGEDATATRANSFER_PASSIVESETTINGSL_EXIT ); |
|
1100 return settings; |
1156 return settings; |
1101 } |
1157 } |
1102 |
1158 |
1103 TActiveBURSettings CPackageDataTransfer::ActiveSettingsL() |
1159 TActiveBURSettings CPackageDataTransfer::ActiveSettingsL() |
1104 /** Get the active settings of the data owner |
1160 /** Get the active settings of the data owner |
1116 /** Set the registration file for the package |
1172 /** Set the registration file for the package |
1117 @param aFileName path including filename of the registration file |
1173 @param aFileName path including filename of the registration file |
1118 */ |
1174 */ |
1119 void CPackageDataTransfer::SetRegistrationFileL(const TDesC& aFileName) |
1175 void CPackageDataTransfer::SetRegistrationFileL(const TDesC& aFileName) |
1120 { |
1176 { |
1177 OstTraceFunctionEntry0( CPACKAGEDATATRANSFER_SETREGISTRATIONFILEL_ENTRY ); |
|
1121 delete iRegistrationFile; |
1178 delete iRegistrationFile; |
1122 iRegistrationFile = aFileName.AllocL(); |
1179 iRegistrationFile = aFileName.AllocL(); |
1180 OstTraceFunctionExit0( CPACKAGEDATATRANSFER_SETREGISTRATIONFILEL_EXIT ); |
|
1123 } |
1181 } |
1124 |
1182 |
1125 /** Parses the package registration file |
1183 /** Parses the package registration file |
1126 @pre CPackageDataTransfer::SetRegistrationFile() must have been called |
1184 @pre CPackageDataTransfer::SetRegistrationFile() must have been called |
1127 */ |
1185 */ |
1128 void CPackageDataTransfer::ParseL() |
1186 void CPackageDataTransfer::ParseL() |
1129 { |
1187 { |
1188 OstTraceFunctionEntry0( CPACKAGEDATATRANSFER_PARSEL_ENTRY ); |
|
1130 if ((*iRegistrationFile).FindF(KPrimaryBackupRegistrationFile) == KErrNotFound) |
1189 if ((*iRegistrationFile).FindF(KPrimaryBackupRegistrationFile) == KErrNotFound) |
1131 { |
1190 { |
1191 OstTrace0(TRACE_ERROR, CPACKAGEDATATRANSFER_PARSEL, "Leave: KErrNotReady"); |
|
1132 User::Leave(KErrNotReady); |
1192 User::Leave(KErrNotReady); |
1133 } |
1193 } |
1134 |
1194 |
1135 ipDataOwnerManager->ParserProxy().ParseL(*iRegistrationFile, *this); |
1195 ipDataOwnerManager->ParserProxy().ParseL(*iRegistrationFile, *this); |
1196 OstTraceFunctionExit0( CPACKAGEDATATRANSFER_PARSEL_EXIT ); |
|
1136 } |
1197 } |
1137 |
1198 |
1138 |
1199 |
1139 void CPackageDataTransfer::GetRawPublicFileListL(TDriveNumber aDriveNumber, |
1200 void CPackageDataTransfer::GetRawPublicFileListL(TDriveNumber aDriveNumber, |
1140 RRestoreFileFilterArray& aRestoreFileFilter) |
1201 RRestoreFileFilterArray& aRestoreFileFilter) |
1142 |
1203 |
1143 @param aDriveNumber the drive to return the list for |
1204 @param aDriveNumber the drive to return the list for |
1144 @param aRestoreFileFilter on return the file filter |
1205 @param aRestoreFileFilter on return the file filter |
1145 */ |
1206 */ |
1146 { |
1207 { |
1208 OstTraceFunctionEntry0( CPACKAGEDATATRANSFER_GETRAWPUBLICFILELISTL_ENTRY ); |
|
1147 // Convert drive number to letter |
1209 // Convert drive number to letter |
1148 TChar drive; |
1210 TChar drive; |
1149 User::LeaveIfError(iFs.DriveToChar(aDriveNumber, drive)); |
1211 TInt err = iFs.DriveToChar(aDriveNumber, drive); |
1212 LEAVEIFERROR(err, OstTrace1(TRACE_ERROR, CPACKAGEDATATRANSFER_GETRAWPUBLICFILELISTL, "error = %d", err)); |
|
1150 |
1213 |
1151 const TInt count = iPublicSelections.Count(); |
1214 const TInt count = iPublicSelections.Count(); |
1152 for (TInt x = 0; x < count; x++) |
1215 for (TInt x = 0; x < count; x++) |
1153 { |
1216 { |
1154 CSelection* selection = iPublicSelections[x]; |
1217 CSelection* selection = iPublicSelections[x]; |
1187 if (add) |
1250 if (add) |
1188 { |
1251 { |
1189 aRestoreFileFilter.AppendL(TRestoreFileFilter(include, filename)); |
1252 aRestoreFileFilter.AppendL(TRestoreFileFilter(include, filename)); |
1190 } // if |
1253 } // if |
1191 } // for x |
1254 } // for x |
1255 OstTraceFunctionExit0( CPACKAGEDATATRANSFER_GETRAWPUBLICFILELISTL_EXIT ); |
|
1192 } |
1256 } |
1193 |
1257 |
1194 |
1258 |
1195 void CPackageDataTransfer::GetPublicFileListL(TDriveNumber aDriveNumber, RFileArray& aFiles) |
1259 void CPackageDataTransfer::GetPublicFileListL(TDriveNumber aDriveNumber, RFileArray& aFiles) |
1196 /** Gets the public file list |
1260 /** Gets the public file list |
1198 Gets the public file list for the given drive |
1262 Gets the public file list for the given drive |
1199 @param aDriveNumber the drive to retrieve the public files for |
1263 @param aDriveNumber the drive to retrieve the public files for |
1200 @param aFiles on return a list of public files |
1264 @param aFiles on return a list of public files |
1201 */ |
1265 */ |
1202 { |
1266 { |
1267 OstTraceFunctionEntry0( CPACKAGEDATATRANSFER_GETPUBLICFILELISTL_ENTRY ); |
|
1203 _LIT(KDrive, "?:"); |
1268 _LIT(KDrive, "?:"); |
1204 _LIT(KDriveAndSlash, "?:\\"); |
1269 _LIT(KDriveAndSlash, "?:\\"); |
1205 _LIT( KExclamationAsDrive, "!"); // Used to generic drives for public data as in .SIS file package |
1270 _LIT( KExclamationAsDrive, "!"); // Used to generic drives for public data as in .SIS file package |
1206 |
1271 |
1207 // Split selections into include and exclude |
1272 // Split selections into include and exclude |
1210 RArray<TPtrC> exclude; |
1275 RArray<TPtrC> exclude; |
1211 CleanupClosePushL(exclude); |
1276 CleanupClosePushL(exclude); |
1212 TInt count = iPublicSelections.Count(); |
1277 TInt count = iPublicSelections.Count(); |
1213 |
1278 |
1214 |
1279 |
1215 __LOG("CPackageDataTransfer::GetPublicFileListL() - file selection listing...:"); |
1280 OstTrace0(TRACE_NORMAL, CPACKAGEDATATRANSFER_GETPUBLICFILELISTL, "file selection listing...:"); |
1216 for (TInt x = 0; x < count; x++) |
1281 for (TInt x = 0; x < count; x++) |
1217 { |
1282 { |
1218 const TDesC& selectionName = iPublicSelections[x]->SelectionName(); |
1283 const TDesC& selectionName = iPublicSelections[x]->SelectionName(); |
1219 __LOG3("CPackageDataTransfer::GetPublicFileListL() - selection[%03d]: %S, type: %d", x, &selectionName, iPublicSelections[x]->SelectionType()); |
1284 OstTraceExt3(TRACE_NORMAL, DUP1_CPACKAGEDATATRANSFER_GETPUBLICFILELISTL, "selection[%03d]: %S, type: %d", x, selectionName, iPublicSelections[x]->SelectionType()); |
1220 if (iPublicSelections[x]->SelectionType() == EInclude) |
1285 if (iPublicSelections[x]->SelectionType() == EInclude) |
1221 { |
1286 { |
1222 include.AppendL(selectionName); |
1287 include.AppendL(selectionName); |
1223 } // if |
1288 } // if |
1224 else |
1289 else |
1227 } // else |
1292 } // else |
1228 } // for x |
1293 } // for x |
1229 |
1294 |
1230 // Loop through all includes |
1295 // Loop through all includes |
1231 count = include.Count(); |
1296 count = include.Count(); |
1232 __LOG("CPackageDataTransfer::GetPublicFileListL() - include listing...:"); |
1297 OstTrace0(TRACE_NORMAL, DUP2_CPACKAGEDATATRANSFER_GETPUBLICFILELISTL, "include listing...:"); |
1233 for (TInt x = 0; x < count; x++) |
1298 for (TInt x = 0; x < count; x++) |
1234 { |
1299 { |
1235 TFileName fileName; |
1300 TFileName fileName; |
1236 TChar drive; |
1301 TChar drive; |
1237 User::LeaveIfError(iFs.DriveToChar(aDriveNumber, drive)); |
1302 TInt err = iFs.DriveToChar(aDriveNumber, drive); |
1303 LEAVEIFERROR(err, OstTrace1(TRACE_ERROR, DUP13_CPACKAGEDATATRANSFER_GETPUBLICFILELISTL, "error = %d", err)); |
|
1238 |
1304 |
1239 const TPtrC includeEntry( include[x] ); |
1305 const TPtrC includeEntry( include[x] ); |
1240 __LOG2("CPackageDataTransfer::GetPublicFileListL() - entry[%03d] is: %S", x, &includeEntry); |
1306 OstTraceExt2(TRACE_NORMAL, DUP3_CPACKAGEDATATRANSFER_GETPUBLICFILELISTL, "entry[%03d] is: %S", x, includeEntry); |
1241 |
1307 |
1242 // See if the drive is specified |
1308 // See if the drive is specified |
1243 if (include[x][0] == KBackSlash()[0]) |
1309 if (include[x][0] == KBackSlash()[0]) |
1244 { |
1310 { |
1245 // Add the drive |
1311 // Add the drive |
1269 fileName.Copy(includeEntry); |
1335 fileName.Copy(includeEntry); |
1270 } // else |
1336 } // else |
1271 |
1337 |
1272 } // else |
1338 } // else |
1273 |
1339 |
1274 __LOG2("CPackageDataTransfer::GetPublicFileListL() - entry[%03d] filename is therefore: %S", x, &fileName); |
1340 OstTraceExt2(TRACE_NORMAL, DUP4_CPACKAGEDATATRANSFER_GETPUBLICFILELISTL, "entry[%03d] filename is therefore: %S", x, fileName); |
1275 if (fileName.Length() > 0) |
1341 if (fileName.Length() > 0) |
1276 { |
1342 { |
1277 |
1343 |
1278 // Check to see if fileName is just a drive(we cant get an entry) |
1344 // Check to see if fileName is just a drive(we cant get an entry) |
1279 TBool isDrive = EFalse; |
1345 TBool isDrive = EFalse; |
1280 if ((fileName.MatchF(KDrive) != KErrNotFound) || |
1346 if ((fileName.MatchF(KDrive) != KErrNotFound) || |
1281 (fileName.MatchF(KDriveAndSlash) != KErrNotFound)) |
1347 (fileName.MatchF(KDriveAndSlash) != KErrNotFound)) |
1282 { |
1348 { |
1283 isDrive = ETrue; |
1349 isDrive = ETrue; |
1284 __LOG("CPackageDataTransfer::GetPublicFileListL() - filename is a drive"); |
1350 OstTrace0(TRACE_NORMAL, DUP5_CPACKAGEDATATRANSFER_GETPUBLICFILELISTL, "filename is a drive"); |
1285 } // if |
1351 } // if |
1286 |
1352 |
1287 TEntry entry; |
1353 TEntry entry; |
1288 TBool isEntry = EFalse; |
1354 TBool isEntry = EFalse; |
1289 if (!isDrive) |
1355 if (!isDrive) |
1290 { |
1356 { |
1291 TInt err = iFs.Entry(fileName, entry); |
1357 TInt err = iFs.Entry(fileName, entry); |
1292 __LOG1("CPackageDataTransfer::GetPublicFileListL() - get entry error: %d", err); |
1358 OstTrace1(TRACE_NORMAL, DUP6_CPACKAGEDATATRANSFER_GETPUBLICFILELISTL, "get entry error: %d", err); |
1293 entry.iName = fileName; |
1359 entry.iName = fileName; |
1294 switch (err) |
1360 switch (err) |
1295 { |
1361 { |
1296 case KErrNone: |
1362 case KErrNone: |
1297 isEntry = ETrue; |
1363 isEntry = ETrue; |
1299 case KErrNotFound: |
1365 case KErrNotFound: |
1300 case KErrPathNotFound: |
1366 case KErrPathNotFound: |
1301 case KErrBadName: |
1367 case KErrBadName: |
1302 break; |
1368 break; |
1303 default: |
1369 default: |
1370 OstTrace1(TRACE_ERROR, DUP12_CPACKAGEDATATRANSFER_GETPUBLICFILELISTL, "Leave: %d", err); |
|
1304 User::Leave(err); |
1371 User::Leave(err); |
1305 } // switch |
1372 } // switch |
1306 } // if |
1373 } // if |
1307 |
1374 |
1308 if (isDrive || (isEntry && entry.IsDir())) |
1375 if (isDrive || (isEntry && entry.IsDir())) |
1309 { |
1376 { |
1310 __LOG("CPackageDataTransfer::GetPublicFileListL() - parsing directory..."); |
1377 OstTrace0(TRACE_NORMAL, DUP7_CPACKAGEDATATRANSFER_GETPUBLICFILELISTL, "parsing directory..."); |
1311 ParseDirL(fileName, exclude, aFiles); |
1378 ParseDirL(fileName, exclude, aFiles); |
1312 |
1379 |
1313 #ifdef SBE_LOGGING_ENABLED |
|
1314 const TInt fNameCount = aFiles.Count(); |
1380 const TInt fNameCount = aFiles.Count(); |
1315 if (fNameCount) |
1381 if (fNameCount) |
1316 { |
1382 { |
1317 for(TInt k=0; k<fNameCount; k++) |
1383 for(TInt k=0; k<fNameCount; k++) |
1318 { |
1384 { |
1319 const TDesC& fileName = aFiles[k].iName; |
1385 const TDesC& fileName = aFiles[k].iName; |
1320 __LOG2("CPackageDataTransfer::GetPublicFileListL() - directory entry[%03d] %S", k, &fileName); |
1386 OstTraceExt2(TRACE_NORMAL, DUP8_CPACKAGEDATATRANSFER_GETPUBLICFILELISTL, "directory entry[%03d] %S", k, fileName); |
1321 } |
1387 } |
1322 } |
1388 } |
1323 |
1389 |
1324 __LOG("CPackageDataTransfer::GetPublicFileListL() - end of parsing directory"); |
1390 OstTrace0(TRACE_NORMAL, DUP9_CPACKAGEDATATRANSFER_GETPUBLICFILELISTL, "end of parsing directory"); |
1325 #endif |
|
1326 } // if |
1391 } // if |
1327 else |
1392 else |
1328 { |
1393 { |
1329 if (isEntry) |
1394 if (isEntry) |
1330 { |
1395 { |
1331 const TBool isExcluded = IsExcluded(ETrue, fileName, exclude); |
1396 const TBool isExcluded = IsExcluded(ETrue, fileName, exclude); |
1332 if (!isExcluded) |
1397 if (!isExcluded) |
1333 { |
1398 { |
1334 __LOG1("CPackageDataTransfer::GetPublicFileListL() - adding fully verified file: %S", &fileName); |
1399 OstTraceExt1(TRACE_NORMAL, DUP10_CPACKAGEDATATRANSFER_GETPUBLICFILELISTL, "adding fully verified file: %S", fileName); |
1335 // Add to list of files |
1400 // Add to list of files |
1336 aFiles.AppendL(entry); |
1401 aFiles.AppendL(entry); |
1337 } // if |
1402 } // if |
1338 else |
1403 else |
1339 { |
1404 { |
1340 __LOG("CPackageDataTransfer::GetPublicFileListL() - file is excluded!"); |
1405 OstTrace0(TRACE_NORMAL, DUP11_CPACKAGEDATATRANSFER_GETPUBLICFILELISTL, "file is excluded!"); |
1341 } |
1406 } |
1342 } // if |
1407 } // if |
1343 } // else |
1408 } // else |
1344 } // if |
1409 } // if |
1345 } // for x |
1410 } // for x |
1346 |
1411 |
1347 CleanupStack::PopAndDestroy(&exclude); |
1412 CleanupStack::PopAndDestroy(&exclude); |
1348 CleanupStack::PopAndDestroy(&include); |
1413 CleanupStack::PopAndDestroy(&include); |
1349 __LOG("CPackageDataTransfer::GetPublicFileListL() - END"); |
1414 |
1415 OstTraceFunctionExit0( CPACKAGEDATATRANSFER_GETPUBLICFILELISTL_EXIT ); |
|
1350 } |
1416 } |
1351 |
1417 |
1352 void CPackageDataTransfer::ParseDirL(const TDesC& aDirName, const RArray<TPtrC>& aExclude, RFileArray& apFileEntries) |
1418 void CPackageDataTransfer::ParseDirL(const TDesC& aDirName, const RArray<TPtrC>& aExclude, RFileArray& apFileEntries) |
1353 /** Parses a directory for files. |
1419 /** Parses a directory for files. |
1354 |
1420 |
1357 @param aDirName the directory to search |
1423 @param aDirName the directory to search |
1358 @param aExclude a list of directories or files to exclude |
1424 @param aExclude a list of directories or files to exclude |
1359 @param apFileEntries Array of file entries to populate |
1425 @param apFileEntries Array of file entries to populate |
1360 */ |
1426 */ |
1361 { |
1427 { |
1428 OstTraceFunctionEntry0( CPACKAGEDATATRANSFER_PARSEDIRL_ENTRY ); |
|
1362 CDir* pFiles = NULL; |
1429 CDir* pFiles = NULL; |
1363 |
1430 |
1364 // This function requires a / on the end otherwise it does not work! |
1431 // This function requires a / on the end otherwise it does not work! |
1365 TFileName path = aDirName; |
1432 TFileName path = aDirName; |
1366 if (path[path.Length() - 1] != KBackSlash()[0]) |
1433 if (path[path.Length() - 1] != KBackSlash()[0]) |
1369 TInt err = iFs.GetDir(path, KEntryAttMatchMask, ESortNone, pFiles); |
1436 TInt err = iFs.GetDir(path, KEntryAttMatchMask, ESortNone, pFiles); |
1370 CleanupStack::PushL(pFiles); // Add to cleanup stack |
1437 CleanupStack::PushL(pFiles); // Add to cleanup stack |
1371 |
1438 |
1372 if ((err != KErrNone) && (err != KErrNotFound)) // Do we need to leave? |
1439 if ((err != KErrNone) && (err != KErrNotFound)) // Do we need to leave? |
1373 { |
1440 { |
1441 OstTrace1(TRACE_ERROR, CPACKAGEDATATRANSFER_PARSEDIRL, "Leave: %d", err); |
|
1374 User::Leave(err); |
1442 User::Leave(err); |
1375 } // if |
1443 } // if |
1376 |
1444 |
1377 TUint count = pFiles->Count(); |
1445 TUint count = pFiles->Count(); |
1378 while(count--) |
1446 while(count--) |
1398 } // if |
1466 } // if |
1399 } // for x |
1467 } // for x |
1400 |
1468 |
1401 // Cleanup |
1469 // Cleanup |
1402 CleanupStack::PopAndDestroy(pFiles); |
1470 CleanupStack::PopAndDestroy(pFiles); |
1471 OstTraceFunctionExit0( CPACKAGEDATATRANSFER_PARSEDIRL_EXIT ); |
|
1403 } |
1472 } |
1404 |
1473 |
1405 void CPackageDataTransfer::GetDriveListL(TDriveList& aDriveList) |
1474 void CPackageDataTransfer::GetDriveListL(TDriveList& aDriveList) |
1406 /** Get the drive list for the data owner |
1475 /** Get the drive list for the data owner |
1407 |
1476 |
1408 @pre CDataOwner::ParseFilesL() must have been called |
1477 @pre CDataOwner::ParseFilesL() must have been called |
1409 @return the active settings of the data owner |
1478 @return the active settings of the data owner |
1410 @leave KErrNotReady if CDataOwner::ParseFilesL() not called |
1479 @leave KErrNotReady if CDataOwner::ParseFilesL() not called |
1411 */ |
1480 */ |
1412 { |
1481 { |
1413 __LOG1("CPackageDataTransfer::GetDriveListL() - Begin - SID: 0x%08x", iPackageID.iUid); |
1482 OstTraceFunctionEntry0( CPACKAGEDATATRANSFER_GETDRIVELISTL_ENTRY ); |
1483 OstTrace1(TRACE_NORMAL, CPACKAGEDATATRANSFER_GETDRIVELISTL, "SID: 0x%08x", iPackageID.iUid); |
|
1414 |
1484 |
1415 // We now no longer return the Z drive, it has been decided that the Z drive will always be the |
1485 // We now no longer return the Z drive, it has been decided that the Z drive will always be the |
1416 // ROM. Backing up and restoring the ROM drive should not be possible, as what is the point |
1486 // ROM. Backing up and restoring the ROM drive should not be possible, as what is the point |
1417 |
1487 |
1418 // build package files |
1488 // build package files |
1422 |
1492 |
1423 if( err ) |
1493 if( err ) |
1424 { |
1494 { |
1425 iMetaData = NULL; |
1495 iMetaData = NULL; |
1426 iMetaDataSize = 0; |
1496 iMetaDataSize = 0; |
1497 OstTrace1(TRACE_ERROR, DUP2_CPACKAGEDATATRANSFER_GETDRIVELISTL, "Leave: %d", err); |
|
1427 User::Leave( err ); |
1498 User::Leave( err ); |
1428 } |
1499 } |
1429 else |
1500 else |
1430 { |
1501 { |
1431 iMetaDataSize = iMetaData->Size(); |
1502 iMetaDataSize = iMetaData->Size(); |
1444 } |
1515 } |
1445 } |
1516 } |
1446 |
1517 |
1447 aDriveList = iDriveList; |
1518 aDriveList = iDriveList; |
1448 |
1519 |
1449 __LOG1("CPackageDataTransfer::GetDriveListL() - end - SID: 0x%08x", iPackageID.iUid); |
1520 OstTrace1(TRACE_NORMAL, DUP1_CPACKAGEDATATRANSFER_GETDRIVELISTL, "SID: 0x%08x", iPackageID.iUid); |
1521 OstTraceFunctionExit0( CPACKAGEDATATRANSFER_GETDRIVELISTL_EXIT ); |
|
1450 } |
1522 } |
1451 |
1523 |
1452 TBool CPackageDataTransfer::IsExcluded(const TBool aIsPublic, const TDesC& aFileName, const RArray<TPtrC>& aExclude) |
1524 TBool CPackageDataTransfer::IsExcluded(const TBool aIsPublic, const TDesC& aFileName, const RArray<TPtrC>& aExclude) |
1453 /** Checks to see if a given file is excluded |
1525 /** Checks to see if a given file is excluded |
1454 |
1526 |
1457 @param aFileName file to check |
1529 @param aFileName file to check |
1458 @param aExclude list of excluded files |
1530 @param aExclude list of excluded files |
1459 @return ETrue if excluded otherwise EFalse |
1531 @return ETrue if excluded otherwise EFalse |
1460 */ |
1532 */ |
1461 { |
1533 { |
1534 OstTraceFunctionEntry0( CPACKAGEDATATRANSFER_ISEXCLUDED_ENTRY ); |
|
1462 _LIT(KPrivateMatch, "?:\\private\\*"); |
1535 _LIT(KPrivateMatch, "?:\\private\\*"); |
1463 _LIT(KSystem, "?:\\system\\*"); |
1536 _LIT(KSystem, "?:\\system\\*"); |
1464 _LIT(KResource, "?:\\resource\\*"); |
1537 _LIT(KResource, "?:\\resource\\*"); |
1465 _LIT(KOther, "*\\..\\*"); |
1538 _LIT(KOther, "*\\..\\*"); |
1466 TBool ret = EFalse; |
1539 TBool ret = EFalse; |
1499 ret = (aFileName.CompareF(aExclude[x]) == 0); |
1572 ret = (aFileName.CompareF(aExclude[x]) == 0); |
1500 } // else |
1573 } // else |
1501 } // for x |
1574 } // for x |
1502 } // if |
1575 } // if |
1503 |
1576 |
1504 __LOG2("CDataOwner::IsExcluded() - END - returns excluded: %d for file: %S", ret, &aFileName); |
1577 OstTraceExt2(TRACE_NORMAL, CPACKAGEDATATRANSFER_ISEXCLUDED, "returns excluded: %d for file: %S", ret, aFileName); |
1578 OstTraceFunctionExit0( CPACKAGEDATATRANSFER_ISEXCLUDED_EXIT ); |
|
1505 return ret; |
1579 return ret; |
1506 } |
1580 } |
1507 |
1581 |
1508 /** |
1582 /** |
1509 Method will be used for Sort on RPointerArray |
1583 Method will be used for Sort on RPointerArray |
1513 |
1587 |
1514 @see RArray::Sort() |
1588 @see RArray::Sort() |
1515 */ |
1589 */ |
1516 TInt CPackageDataTransfer::Compare(const CPackageDataTransfer& aFirst, const CPackageDataTransfer& aSecond) |
1590 TInt CPackageDataTransfer::Compare(const CPackageDataTransfer& aFirst, const CPackageDataTransfer& aSecond) |
1517 { |
1591 { |
1592 OstTraceFunctionEntry0( CPACKAGEDATATRANSFER_COMPARE_ENTRY ); |
|
1518 if (aFirst.PackageId().iUid < aSecond.PackageId().iUid) |
1593 if (aFirst.PackageId().iUid < aSecond.PackageId().iUid) |
1519 { |
1594 { |
1595 OstTraceFunctionExit0( CPACKAGEDATATRANSFER_COMPARE_EXIT ); |
|
1520 return -1; |
1596 return -1; |
1521 } |
1597 } |
1522 else if (aFirst.PackageId().iUid > aSecond.PackageId().iUid) |
1598 else if (aFirst.PackageId().iUid > aSecond.PackageId().iUid) |
1523 { |
1599 { |
1600 OstTraceFunctionExit0( DUP1_CPACKAGEDATATRANSFER_COMPARE_EXIT ); |
|
1524 return 1; |
1601 return 1; |
1525 } |
1602 } |
1526 else |
1603 else |
1527 { |
1604 { |
1605 OstTraceFunctionExit0( DUP2_CPACKAGEDATATRANSFER_COMPARE_EXIT ); |
|
1528 return 0; |
1606 return 0; |
1529 } |
1607 } |
1530 } |
1608 } |
1531 |
1609 |
1532 /** |
1610 /** |
1551 |
1629 |
1552 void CPackageDataTransfer::OnStartDocumentL(const RDocumentParameters& /*aDocParam*/, TInt aErrorCode) |
1630 void CPackageDataTransfer::OnStartDocumentL(const RDocumentParameters& /*aDocParam*/, TInt aErrorCode) |
1553 /** MContentHandler::OnStartDocumentL() |
1631 /** MContentHandler::OnStartDocumentL() |
1554 */ |
1632 */ |
1555 { |
1633 { |
1634 OstTraceFunctionEntry0( CPACKAGEDATATRANSFER_ONSTARTDOCUMENTL_ENTRY ); |
|
1556 if (aErrorCode != KErrNone) |
1635 if (aErrorCode != KErrNone) |
1557 { |
1636 { |
1558 __LOG1("CPackageDataTransfer::OnStartDocumentL() - error = %d", aErrorCode); |
1637 OstTrace1(TRACE_ERROR, CPACKAGEDATATRANSFER_ONSTARTDOCUMENTL, "error = %d", aErrorCode); |
1559 User::Leave(aErrorCode); |
1638 User::Leave(aErrorCode); |
1560 } |
1639 } |
1640 OstTraceFunctionExit0( CPACKAGEDATATRANSFER_ONSTARTDOCUMENTL_EXIT ); |
|
1561 } |
1641 } |
1562 |
1642 |
1563 void CPackageDataTransfer::OnEndDocumentL(TInt aErrorCode) |
1643 void CPackageDataTransfer::OnEndDocumentL(TInt aErrorCode) |
1564 /** MContentHandler::OnEndDocumentL() |
1644 /** MContentHandler::OnEndDocumentL() |
1565 */ |
1645 */ |
1566 { |
1646 { |
1647 OstTraceFunctionEntry0( CPACKAGEDATATRANSFER_ONENDDOCUMENTL_ENTRY ); |
|
1567 // just to satisfy UREL compiler |
1648 // just to satisfy UREL compiler |
1568 (void) aErrorCode; |
1649 (void) aErrorCode; |
1569 __LOG1("CPackageDataTransfer::OnEndDocumentL() - error = %d", aErrorCode); |
1650 OstTrace1(TRACE_NORMAL, CPACKAGEDATATRANSFER_ONENDDOCUMENTL, "error = %d", aErrorCode); |
1651 OstTraceFunctionExit0( CPACKAGEDATATRANSFER_ONENDDOCUMENTL_EXIT ); |
|
1570 } |
1652 } |
1571 |
1653 |
1572 void CPackageDataTransfer::OnStartElementL(const RTagInfo& aElement, |
1654 void CPackageDataTransfer::OnStartElementL(const RTagInfo& aElement, |
1573 const RAttributeArray& aAttributes, |
1655 const RAttributeArray& aAttributes, |
1574 TInt aErrorCode) |
1656 TInt aErrorCode) |
1575 /** MContentHandler::OnStartElementL() |
1657 /** MContentHandler::OnStartElementL() |
1576 |
1658 |
1577 @leave KErrUnknown an unknown element |
1659 @leave KErrUnknown an unknown element |
1578 */ |
1660 */ |
1579 { |
1661 { |
1662 OstTraceFunctionEntry0( CPACKAGEDATATRANSFER_ONSTARTELEMENTL_ENTRY ); |
|
1580 if (aErrorCode != KErrNone) |
1663 if (aErrorCode != KErrNone) |
1581 { |
1664 { |
1582 __LOG1("CPackageDataTransfer::OnStartElementL() - error = %d", aErrorCode); |
1665 OstTrace1(TRACE_ERROR, CPACKAGEDATATRANSFER_ONSTARTELEMENTL, "error = %d", aErrorCode); |
1583 User::Leave(aErrorCode); |
1666 User::Leave(aErrorCode); |
1584 } |
1667 } |
1585 |
1668 |
1669 TInt err; |
|
1586 TPtrC8 localName = aElement.LocalName().DesC(); |
1670 TPtrC8 localName = aElement.LocalName().DesC(); |
1587 if (localName == KIncludeFile) |
1671 if (localName == KIncludeFile) |
1588 { |
1672 { |
1589 HandlePathL(EInclude, aAttributes, EFalse); |
1673 HandlePathL(EInclude, aAttributes, EFalse); |
1590 } |
1674 } |
1600 { |
1684 { |
1601 HandleBackupRegistrationL(aAttributes); |
1685 HandleBackupRegistrationL(aAttributes); |
1602 } |
1686 } |
1603 else if (!localName.CompareF(KPublicBackup)) |
1687 else if (!localName.CompareF(KPublicBackup)) |
1604 { |
1688 { |
1605 User::LeaveIfError(HandlePublicBackup(aAttributes)); |
1689 err = HandlePublicBackup(aAttributes); |
1690 LEAVEIFERROR(err, OstTrace1(TRACE_ERROR, DUP2_CPACKAGEDATATRANSFER_ONSTARTELEMENTL, "error = %d", err)); |
|
1606 } |
1691 } |
1607 else if (!localName.CompareF(KSystemBackup)) |
1692 else if (!localName.CompareF(KSystemBackup)) |
1608 { |
1693 { |
1609 User::LeaveIfError(HandleSystemBackup(aAttributes)); |
1694 err = HandleSystemBackup(aAttributes); |
1695 LEAVEIFERROR(err, OstTrace1(TRACE_ERROR, DUP3_CPACKAGEDATATRANSFER_ONSTARTELEMENTL, "error = %d", err)); |
|
1610 } |
1696 } |
1611 else |
1697 else |
1612 { |
1698 { |
1613 __LOG1("CPackageDataTransfer::OnStartElementL() - Unknown element while parsing 0x%08x", iPackageID.iUid); |
1699 OstTrace1(TRACE_NORMAL, DUP1_CPACKAGEDATATRANSFER_ONSTARTELEMENTL, "Unknown element while parsing 0x%08x", iPackageID.iUid); |
1614 } |
1700 } |
1615 |
1701 |
1702 OstTraceFunctionExit0( CPACKAGEDATATRANSFER_ONSTARTELEMENTL_EXIT ); |
|
1616 } |
1703 } |
1617 |
1704 |
1618 |
1705 |
1619 void CPackageDataTransfer::OnEndElementL(const RTagInfo& aElement, TInt aErrorCode) |
1706 void CPackageDataTransfer::OnEndElementL(const RTagInfo& aElement, TInt aErrorCode) |
1620 /** MContentHandler::OnEndElementL() |
1707 /** MContentHandler::OnEndElementL() |
1621 */ |
1708 */ |
1622 { |
1709 { |
1710 OstTraceFunctionEntry0( CPACKAGEDATATRANSFER_ONENDELEMENTL_ENTRY ); |
|
1623 if (aErrorCode != KErrNone) |
1711 if (aErrorCode != KErrNone) |
1624 { |
1712 { |
1625 __LOG1("CPackageDataTransfer::OnEndElementL() - error = %d", aErrorCode); |
1713 OstTrace1(TRACE_ERROR, CPACKAGEDATATRANSFER_ONENDELEMENTL, "error = %d", aErrorCode); |
1626 User::Leave(aErrorCode); |
1714 User::Leave(aErrorCode); |
1627 } |
1715 } |
1628 |
1716 |
1629 TPtrC8 localName = aElement.LocalName().DesC(); |
1717 TPtrC8 localName = aElement.LocalName().DesC(); |
1630 if (!localName.CompareF(KPublicBackup)) |
1718 if (!localName.CompareF(KPublicBackup)) |
1631 { |
1719 { |
1632 iCurrentElement = ENoElement; |
1720 iCurrentElement = ENoElement; |
1633 } // if |
1721 } // if |
1722 OstTraceFunctionExit0( CPACKAGEDATATRANSFER_ONENDELEMENTL_EXIT ); |
|
1634 } |
1723 } |
1635 |
1724 |
1636 void CPackageDataTransfer::OnContentL(const TDesC8& /*aBytes*/, TInt /*aErrorCode*/) |
1725 void CPackageDataTransfer::OnContentL(const TDesC8& /*aBytes*/, TInt /*aErrorCode*/) |
1637 /** MContentHandler::OnContentL() |
1726 /** MContentHandler::OnContentL() |
1638 */ |
1727 */ |
1682 /** MContentHandler::OnError() |
1771 /** MContentHandler::OnError() |
1683 |
1772 |
1684 @leave aErrorCode |
1773 @leave aErrorCode |
1685 */ |
1774 */ |
1686 { |
1775 { |
1776 OstTraceFunctionEntry0( CPACKAGEDATATRANSFER_ONERROR_ENTRY ); |
|
1687 (void)aErrorCode; |
1777 (void)aErrorCode; |
1688 __LOG1("CPackageDataTransfer::OnError() - error = %d", aErrorCode); |
1778 OstTrace1(TRACE_NORMAL, CPACKAGEDATATRANSFER_ONERROR, "error = %d", aErrorCode); |
1779 OstTraceFunctionExit0( CPACKAGEDATATRANSFER_ONERROR_EXIT ); |
|
1689 } |
1780 } |
1690 |
1781 |
1691 TAny* CPackageDataTransfer::GetExtendedInterface(const TInt32 /*aUid*/) |
1782 TAny* CPackageDataTransfer::GetExtendedInterface(const TInt32 /*aUid*/) |
1692 /** MContentHandler::OnEndPrefixMappingL() |
1783 /** MContentHandler::OnEndPrefixMappingL() |
1693 */ |
1784 */ |
1701 @param aAttributes the attributes for the element |
1792 @param aAttributes the attributes for the element |
1702 @return KErrNone no errors |
1793 @return KErrNone no errors |
1703 @return KErrUnknown unknown version |
1794 @return KErrUnknown unknown version |
1704 */ |
1795 */ |
1705 { |
1796 { |
1797 OstTraceFunctionEntry0( CPACKAGEDATATRANSFER_HANDLEBACKUPREGISTRATIONL_ENTRY ); |
|
1706 _LIT8(KVersion, "1.0"); |
1798 _LIT8(KVersion, "1.0"); |
1707 |
1799 |
1708 if (aAttributes.Count() == 1) |
1800 if (aAttributes.Count() == 1) |
1709 { |
1801 { |
1710 // Check the version is correct. |
1802 // Check the version is correct. |
1711 if (aAttributes[0].Value().DesC() != KVersion()) // Only version we know about |
1803 if (aAttributes[0].Value().DesC() != KVersion()) // Only version we know about |
1712 { |
1804 { |
1713 __LOG1("CDataOwner::HandleBackupRegistrationL() - Unknown version at SID(0x%08x)", iPackageID.iUid); |
1805 OstTrace1(TRACE_ERROR, CPACKAGEDATATRANSFER_HANDLEBACKUPREGISTRATIONL, "Unknown version at SID(0x%08x)", iPackageID.iUid); |
1714 User::Leave(KErrNotSupported); |
1806 User::Leave(KErrNotSupported); |
1715 } // else |
1807 } // else |
1716 } // if |
1808 } // if |
1809 OstTraceFunctionExit0( CPACKAGEDATATRANSFER_HANDLEBACKUPREGISTRATIONL_EXIT ); |
|
1717 } |
1810 } |
1718 |
1811 |
1719 |
1812 |
1720 TInt CPackageDataTransfer::HandlePublicBackup(const RAttributeArray& aAttributes) |
1813 TInt CPackageDataTransfer::HandlePublicBackup(const RAttributeArray& aAttributes) |
1721 /** Handles the "public_backup" element |
1814 /** Handles the "public_backup" element |
1722 |
1815 |
1723 @param aAttributes the attributes for the element |
1816 @param aAttributes the attributes for the element |
1724 @return KErrNone |
1817 @return KErrNone |
1725 */ |
1818 */ |
1726 { |
1819 { |
1820 OstTraceFunctionEntry0( CPACKAGEDATATRANSFER_HANDLEPUBLICBACKUP_ENTRY ); |
|
1727 iPublicInformation.iSupported = ETrue; |
1821 iPublicInformation.iSupported = ETrue; |
1728 |
1822 |
1729 if (aAttributes.Count() > 0) |
1823 if (aAttributes.Count() > 0) |
1730 { |
1824 { |
1731 const TBool deleteBeforeRestore = ( aAttributes[0].Value().DesC().CompareF(KYes) == 0 ); |
1825 const TBool deleteBeforeRestore = ( aAttributes[0].Value().DesC().CompareF(KYes) == 0 ); |
1732 iPublicInformation.iDeleteBeforeRestore = deleteBeforeRestore; |
1826 iPublicInformation.iDeleteBeforeRestore = deleteBeforeRestore; |
1733 __LOG2("CPackageDataTransfer::HandlePublicBackup(0x%08x) - iPublicInformation.iDeleteBeforeRestore: %d", iPackageID.iUid, deleteBeforeRestore); |
1827 OstTraceExt2(TRACE_NORMAL, CPACKAGEDATATRANSFER_HANDLEPUBLICBACKUP, "(0x%08x) - iPublicInformation.iDeleteBeforeRestore: %d", iPackageID.iUid, static_cast<TInt32>(deleteBeforeRestore)); |
1734 } // if |
1828 } // if |
1735 |
1829 |
1736 iCurrentElement = EPublic; |
1830 iCurrentElement = EPublic; |
1737 |
1831 |
1832 OstTraceFunctionExit0( CPACKAGEDATATRANSFER_HANDLEPUBLICBACKUP_EXIT ); |
|
1738 return KErrNone; |
1833 return KErrNone; |
1739 } |
1834 } |
1740 |
1835 |
1741 TInt CPackageDataTransfer::HandleSystemBackup(const RAttributeArray& /*aAttributes*/) |
1836 TInt CPackageDataTransfer::HandleSystemBackup(const RAttributeArray& /*aAttributes*/) |
1742 /** Handles the "system_backup" element |
1837 /** Handles the "system_backup" element |
1743 |
1838 |
1744 @param aAttributes the attributes for the element |
1839 @param aAttributes the attributes for the element |
1745 @return KErrNone |
1840 @return KErrNone |
1746 */ |
1841 */ |
1747 { |
1842 { |
1843 OstTraceFunctionEntry0( CPACKAGEDATATRANSFER_HANDLESYSTEMBACKUP_ENTRY ); |
|
1748 iSystemInformation.iSupported = ETrue; |
1844 iSystemInformation.iSupported = ETrue; |
1749 __LOG2("CPackageDataTransfer::HandlePublicBackup(0x%08x) - iSystemInformation.iSupported: %d", iPackageID.iUid, iSystemInformation.iSupported); |
1845 OstTraceExt2(TRACE_NORMAL, CPACKAGEDATATRANSFER_HANDLESYSTEMBACKUP, "(0x%08x) - iSystemInformation.iSupported: %d", iPackageID.iUid, static_cast<TInt32>(iSystemInformation.iSupported)); |
1750 |
1846 |
1847 OstTraceFunctionExit0( CPACKAGEDATATRANSFER_HANDLESYSTEMBACKUP_EXIT ); |
|
1751 return KErrNone; |
1848 return KErrNone; |
1752 } |
1849 } |
1753 |
1850 |
1754 |
1851 |
1755 void CPackageDataTransfer::HandlePathL(const TSelectionType aType, |
1852 void CPackageDataTransfer::HandlePathL(const TSelectionType aType, |
1760 @param aType The selection type |
1857 @param aType The selection type |
1761 @param aAttributes The attributes for the element |
1858 @param aAttributes The attributes for the element |
1762 @param aDir The element was found in an <include_dir/> element? |
1859 @param aDir The element was found in an <include_dir/> element? |
1763 */ |
1860 */ |
1764 { |
1861 { |
1862 OstTraceFunctionEntry0( CPACKAGEDATATRANSFER_HANDLEPATHL_ENTRY ); |
|
1765 // Check we dont have a NULL string |
1863 // Check we dont have a NULL string |
1766 if (aAttributes[0].Value().DesC().Length() > 0) |
1864 if (aAttributes[0].Value().DesC().Length() > 0) |
1767 { |
1865 { |
1768 switch (iCurrentElement) |
1866 switch (iCurrentElement) |
1769 { |
1867 { |
1785 if (selectionName[1] == ':') |
1883 if (selectionName[1] == ':') |
1786 { |
1884 { |
1787 CSelection* selection = CSelection::NewLC(aType, selectionName); |
1885 CSelection* selection = CSelection::NewLC(aType, selectionName); |
1788 iPublicSelections.AppendL(selection); |
1886 iPublicSelections.AppendL(selection); |
1789 CleanupStack::Pop(selection); |
1887 CleanupStack::Pop(selection); |
1790 __LOG3("CPackageDataTransfer::HandlePathL(0x%08x) - Added selection: %S [type: %d]", iPackageID.iUid, &selectionName, aType); |
1888 OstTraceExt3(TRACE_NORMAL, CPACKAGEDATATRANSFER_HANDLEPATHL, "(0x%08x) - Added selection: %S [type: %d]", iPackageID.iUid, selectionName, static_cast<TInt32>(aType)); |
1791 } //if |
1889 } //if |
1792 }// if |
1890 }// if |
1793 else |
1891 else |
1794 { |
1892 { |
1795 __LOG3("CPackageDataTransfer::HandlePathL(0x%08x) - Wrong format: %S [type: %d]", iPackageID.iUid, &selectionName, aType); |
1893 OstTraceExt3(TRACE_NORMAL, DUP1_CPACKAGEDATATRANSFER_HANDLEPATHL, "(0x%08x) - Wrong format: %S [type: %d]", iPackageID.iUid, selectionName, static_cast<TInt32>(aType)); |
1796 } |
1894 } |
1797 } // if |
1895 } // if |
1798 else |
1896 else |
1799 { |
1897 { |
1800 __LOG1("CPackageDataTransfer::HandlePathL(0x%08x) - EPublic - Could not convert filename", iPackageID.iUid); |
1898 OstTrace1(TRACE_NORMAL, DUP2_CPACKAGEDATATRANSFER_HANDLEPATHL, "(0x%08x) - EPublic - Could not convert filename", iPackageID.iUid); |
1801 } // else |
1899 } // else |
1802 break; |
1900 break; |
1803 }; |
1901 }; |
1804 default: |
1902 default: |
1805 { |
1903 { |
1806 __LOG1("CPackageDataTransfer::HandlePathL(0x%08x) - Private data is Not Supported", iPackageID.iUid); |
1904 OstTrace1(TRACE_NORMAL, DUP3_CPACKAGEDATATRANSFER_HANDLEPATHL, "(0x%08x) - Private data is Not Supported", iPackageID.iUid); |
1807 } |
1905 } |
1808 break; |
1906 break; |
1809 } // switch |
1907 } // switch |
1810 } // if |
1908 } // if |
1811 else |
1909 else |
1812 { |
1910 { |
1813 __LOG1("CPackageDataTransfer::HandlePathL(0x%08x) - Path attribute error", iPackageID.iUid); |
1911 OstTrace1(TRACE_NORMAL, DUP4_CPACKAGEDATATRANSFER_HANDLEPATHL, "(0x%08x) - Path attribute error", iPackageID.iUid); |
1814 } // else |
1912 } // else |
1913 OstTraceFunctionExit0( CPACKAGEDATATRANSFER_HANDLEPATHL_EXIT ); |
|
1815 } |
1914 } |
1816 // // |
1915 // // |
1817 // MContentHandler // |
1916 // MContentHandler // |
1818 // |
1917 // |
1819 |
1918 |