143 @panic USER 0, in debug builds only, if the framework storages owner identifier |
154 @panic USER 0, in debug builds only, if the framework storages owner identifier |
144 is set more than once. |
155 is set more than once. |
145 */ |
156 */ |
146 EXPORT_C void CMTPStorageMgr::SetFrameworkId(TUint aDataProviderId) |
157 EXPORT_C void CMTPStorageMgr::SetFrameworkId(TUint aDataProviderId) |
147 { |
158 { |
148 __FLOG(_L8("SetFrameworkStoragesOwner - Entry")); |
159 OstTraceFunctionEntry0( CMTPSTORAGEMGR_SETFRAMEWORKID_ENTRY ); |
149 __ASSERT_DEBUG((iFrameworkId == KErrNotFound), User::Invariant()); |
160 __ASSERT_DEBUG((iFrameworkId == KErrNotFound), User::Invariant()); |
150 iFrameworkId = aDataProviderId; |
161 iFrameworkId = aDataProviderId; |
151 __FLOG_VA((_L8("System storages owner DP Id = %d"), aDataProviderId)); |
162 OstTrace1(TRACE_NORMAL, CMTPSTORAGEMGR_SETFRAMEWORKID, |
152 __FLOG(_L8("SetFrameworkStoragesOwner - Exit")); |
163 "System storages owner DP Id = %d", aDataProviderId); |
|
164 OstTraceFunctionExit0( CMTPSTORAGEMGR_SETFRAMEWORKID_EXIT ); |
153 } |
165 } |
154 |
166 |
155 EXPORT_C TUint32 CMTPStorageMgr::AllocateLogicalStorageIdL(TUint aDataProviderId, TDriveNumber aDriveNumber, const CMTPStorageMetaData& aStorage) |
167 EXPORT_C TUint32 CMTPStorageMgr::AllocateLogicalStorageIdL(TUint aDataProviderId, TDriveNumber aDriveNumber, const CMTPStorageMetaData& aStorage) |
156 { |
168 { |
157 __FLOG(_L8("AllocateLogicalStorageIdL - Entry")); |
169 OstTraceFunctionEntry0( CMTPSTORAGEMGR_ALLOCATELOGICALSTORAGEIDL_TDRIVERNUMBER_ENTRY ); |
158 TUint id(AllocateLogicalStorageIdL(aDataProviderId, PhysicalStorageId(aDriveNumber), aStorage)); |
170 TUint id(AllocateLogicalStorageIdL(aDataProviderId, PhysicalStorageId(aDriveNumber), aStorage)); |
159 __FLOG(_L8("AllocateLogicalStorageIdL - Exit")); |
171 OstTraceFunctionExit0( CMTPSTORAGEMGR_ALLOCATELOGICALSTORAGEIDL_EXIT ); |
160 return id; |
172 return id; |
161 } |
173 } |
162 |
174 |
163 EXPORT_C TUint32 CMTPStorageMgr::AllocateLogicalStorageIdL(TUint aDataProviderId, TUint32 aPhysicalStorageId, const CMTPStorageMetaData& aStorage) |
175 EXPORT_C TUint32 CMTPStorageMgr::AllocateLogicalStorageIdL(TUint aDataProviderId, TUint32 aPhysicalStorageId, const CMTPStorageMetaData& aStorage) |
164 { |
176 { |
165 __FLOG(_L8("AllocateLogicalStorageIdL - Entry")); |
177 OstTraceFunctionEntry0( CMTPSTORAGEMGR_ALLOCATELOGICALSTORAGEIDL_TUINT32_ENTRY ); |
166 //if support uninstall DP, comment the below assert. |
178 //if support uninstall DP, comment the below assert. |
167 //__ASSERT_DEBUG((aDataProviderId < iSingletons.DpController().Count()), User::Invariant()); |
179 //__ASSERT_DEBUG((aDataProviderId < iSingletons.DpController().Count()), User::Invariant()); |
168 |
180 |
169 // Resolve the physical storage. |
181 // Resolve the physical storage. |
170 CMTPStorageMetaData& physical(StorageMetaDataL(aPhysicalStorageId)); |
182 CMTPStorageMetaData& physical(StorageMetaDataL(aPhysicalStorageId)); |
171 // Validate the SUID and storage type. |
183 // Validate the SUID and storage type. |
172 if (iStorages.Find(aStorage.DesC(CMTPStorageMetaData::EStorageSuid), StorageKeyMatchSuid) != KErrNotFound) |
184 if (iStorages.Find(aStorage.DesC(CMTPStorageMetaData::EStorageSuid), StorageKeyMatchSuid) != KErrNotFound) |
173 { |
185 { |
174 // SUID is not unique. |
186 // SUID is not unique. |
|
187 OstTrace0( TRACE_ERROR, CMTPSTORAGEMGR_ALLOCATELOGICALSTORAGEIDL, "SUID is not unique" ); |
175 User::Leave(KErrAlreadyExists); |
188 User::Leave(KErrAlreadyExists); |
176 } |
189 } |
177 else if (aStorage.Uint(CMTPStorageMetaData::EStorageSystemType) != physical.Uint(CMTPStorageMetaData::EStorageSystemType)) |
190 else if (aStorage.Uint(CMTPStorageMetaData::EStorageSystemType) != physical.Uint(CMTPStorageMetaData::EStorageSystemType)) |
178 { |
191 { |
179 // Physical/logical storage type mis-match. |
192 // Physical/logical storage type mis-match. |
|
193 OstTrace0( TRACE_ERROR, DUP2_CMTPSTORAGEMGR_ALLOCATELOGICALSTORAGEIDL, "Physical/logical storage type mis-match" ); |
180 User::Leave(KErrArgument); |
194 User::Leave(KErrArgument); |
181 } |
195 } |
182 else if (aStorage.Uint(CMTPStorageMetaData::EStorageSystemType) == CMTPStorageMetaData::ESystemTypeDefaultFileSystem) |
196 else if (aStorage.Uint(CMTPStorageMetaData::EStorageSystemType) == CMTPStorageMetaData::ESystemTypeDefaultFileSystem) |
183 { |
197 { |
184 // Validate that the SUID path exists. |
198 // Validate that the SUID path exists. |
185 if (!BaflUtils::PathExists(iSingletons.Fs(), aStorage.DesC(CMTPStorageMetaData::EStorageSuid))) |
199 if (!BaflUtils::PathExists(iSingletons.Fs(), aStorage.DesC(CMTPStorageMetaData::EStorageSuid))) |
186 { |
200 { |
|
201 OstTrace0( TRACE_ERROR, DUP3_CMTPSTORAGEMGR_ALLOCATELOGICALSTORAGEIDL, "the SUID path doesn't exist" ); |
187 User::Leave(KErrPathNotFound); |
202 User::Leave(KErrPathNotFound); |
188 } |
203 } |
189 |
204 |
190 // Validate that the SUID path corresponds to the physical storage drive. |
205 // Validate that the SUID path corresponds to the physical storage drive. |
191 TInt storageDrive(DriveNumber(aPhysicalStorageId)); |
206 TInt storageDrive(DriveNumber(aPhysicalStorageId)); |
192 TParse p; |
207 TParse p; |
193 User::LeaveIfError(p.Set(aStorage.DesC(CMTPStorageMetaData::EStorageSuid), NULL, NULL)); |
208 LEAVEIFERROR(p.Set(aStorage.DesC(CMTPStorageMetaData::EStorageSuid), NULL, NULL), |
|
209 OstTrace0( TRACE_ERROR, DUP4_CMTPSTORAGEMGR_ALLOCATELOGICALSTORAGEIDL, "storage can't be parsed!")); |
194 TInt suidDrive(0); |
210 TInt suidDrive(0); |
195 User::LeaveIfError(iSingletons.Fs().CharToDrive(TChar(p.Drive()[0]), suidDrive)); |
211 LEAVEIFERROR(iSingletons.Fs().CharToDrive(TChar(p.Drive()[0]), suidDrive), |
|
212 OstTrace0( TRACE_ERROR, DUP5_CMTPSTORAGEMGR_ALLOCATELOGICALSTORAGEIDL, "CharToDrive failed!" )); |
|
213 |
196 if (suidDrive != storageDrive) |
214 if (suidDrive != storageDrive) |
197 { |
215 { |
198 // SUID path/physical storage drive mis-match. |
216 // SUID path/physical storage drive mis-match. |
|
217 OstTraceExt2( TRACE_ERROR, DUP6_CMTPSTORAGEMGR_ALLOCATELOGICALSTORAGEIDL, |
|
218 "SUID path %d /physical storage drive %d mis-match", suidDrive, storageDrive); |
199 User::Leave(KErrArgument); |
219 User::Leave(KErrArgument); |
200 } |
220 } |
201 } |
221 } |
202 |
222 |
203 // Allocate a logical StorageId. |
223 // Allocate a logical StorageId. |
204 TInt32 id(AllocateLogicalStorageId(aDataProviderId, aPhysicalStorageId)); |
224 TInt32 id(AllocateLogicalStorageId(aDataProviderId, aPhysicalStorageId)); |
205 User::LeaveIfError(id); |
225 LEAVEIFERROR(id, |
206 |
226 OstTraceExt2( TRACE_ERROR, DUP7_CMTPSTORAGEMGR_ALLOCATELOGICALSTORAGEIDL, |
|
227 "allocate logical storageId for Dp %d, Physical StorageId %d failed!", aDataProviderId, aPhysicalStorageId)); |
|
228 |
207 // Create the logical storage meta-data. |
229 // Create the logical storage meta-data. |
208 CMTPStorageMetaData* logical(CMTPStorageMetaData::NewLC(aStorage)); |
230 CMTPStorageMetaData* logical(CMTPStorageMetaData::NewLC(aStorage)); |
209 logical->SetUint(CMTPStorageMetaData::EStorageId, id); |
231 logical->SetUint(CMTPStorageMetaData::EStorageId, id); |
210 |
232 |
211 // Store the logical storage meta-data. |
233 // Store the logical storage meta-data. |
218 physical.GetUintArrayL(CMTPStorageMetaData::EStorageLogicalIds, logicals); |
240 physical.GetUintArrayL(CMTPStorageMetaData::EStorageLogicalIds, logicals); |
219 logicals.InsertInOrderL(id); |
241 logicals.InsertInOrderL(id); |
220 physical.SetUintArrayL(CMTPStorageMetaData::EStorageLogicalIds, logicals); |
242 physical.SetUintArrayL(CMTPStorageMetaData::EStorageLogicalIds, logicals); |
221 CleanupStack::PopAndDestroy(&logicals); |
243 CleanupStack::PopAndDestroy(&logicals); |
222 |
244 |
223 #ifdef __FLOG_ACTIVE |
245 #ifdef OST_TRACE_COMPILER_IN_USE |
224 HBufC8* buf(HBufC8::NewLC(aStorage.DesC(CMTPStorageMetaData::EStorageSuid).Length())); |
246 HBufC8* buf(HBufC8::NewLC(aStorage.DesC(CMTPStorageMetaData::EStorageSuid).Length())); |
225 buf->Des().Copy(aStorage.DesC(CMTPStorageMetaData::EStorageSuid)); |
247 buf->Des().Copy(aStorage.DesC(CMTPStorageMetaData::EStorageSuid)); |
226 __FLOG_VA((_L8("Allocated logical StorageID 0x%08X for storage SUID %S"), id, buf)); |
248 OstTraceExt2(TRACE_NORMAL, DUP8_CMTPSTORAGEMGR_ALLOCATELOGICALSTORAGEIDL_TUINT32, |
|
249 "Allocated logical StorageID 0x%08X for storage SUID %s", (TUint)id, *buf); |
227 CleanupStack::PopAndDestroy(buf); |
250 CleanupStack::PopAndDestroy(buf); |
228 #endif // __FLOG_ACTIVE |
251 #endif // OST_TRACE_COMPILER_IN_USE |
229 __FLOG(_L8("AllocateLogicalStorageIdL - Exit")); |
252 OstTraceFunctionExit0( CMTPSTORAGEMGR_ALLOCATELOGICALSTORAGEIDL_TUINT32_EXIT ); |
230 return id; |
253 return id; |
231 } |
254 } |
232 |
255 |
233 EXPORT_C TUint32 CMTPStorageMgr::AllocatePhysicalStorageIdL(TUint aDataProviderId, const CMTPStorageMetaData& aStorage) |
256 EXPORT_C TUint32 CMTPStorageMgr::AllocatePhysicalStorageIdL(TUint aDataProviderId, const CMTPStorageMetaData& aStorage) |
234 { |
257 { |
235 __FLOG(_L8("AllocatePhysicalStorageIdL - Entry")); |
258 OstTraceFunctionEntry0( CMTPSTORAGEMGR_ALLOCATEPHYSICALSTORAGEIDL_ENTRY ); |
236 |
259 |
237 // Validate the SUID. |
260 // Validate the SUID. |
238 if (iStorages.Find(aStorage.DesC(CMTPStorageMetaData::EStorageSuid), StorageKeyMatchSuid) != KErrNotFound) |
261 if (iStorages.Find(aStorage.DesC(CMTPStorageMetaData::EStorageSuid), StorageKeyMatchSuid) != KErrNotFound) |
239 { |
262 { |
240 // SUID is not unique. |
263 // SUID is not unique. |
|
264 OstTrace0( TRACE_ERROR, DUP1_CMTPSTORAGEMGR_ALLOCATEPHYSICALSTORAGEIDL, "SUID is not unique" ); |
241 User::Leave(KErrAlreadyExists); |
265 User::Leave(KErrAlreadyExists); |
242 } |
266 } |
243 |
267 |
244 // Allocate a physical StorageId. |
268 // Allocate a physical StorageId. |
245 TInt32 id(AllocatePhysicalStorageId(aDataProviderId)); |
269 TInt32 id(AllocatePhysicalStorageId(aDataProviderId)); |
246 User::LeaveIfError(id); |
270 LEAVEIFERROR(id, |
|
271 OstTrace1( TRACE_ERROR, DUP2_CMTPSTORAGEMGR_ALLOCATEPHYSICALSTORAGEIDL, "Allocate Physical StorageId for Dp %d failed", aDataProviderId)); |
|
272 |
247 |
273 |
248 // Create the physical storage meta-data. |
274 // Create the physical storage meta-data. |
249 CMTPStorageMetaData* physical(CMTPStorageMetaData::NewLC(aStorage)); |
275 CMTPStorageMetaData* physical(CMTPStorageMetaData::NewLC(aStorage)); |
250 const RArray<TUint> noStorages; |
276 const RArray<TUint> noStorages; |
251 physical->SetUint(CMTPStorageMetaData::EStorageId, id); |
277 physical->SetUint(CMTPStorageMetaData::EStorageId, id); |
366 { |
393 { |
367 drive = i; |
394 drive = i; |
368 } |
395 } |
369 } |
396 } |
370 } |
397 } |
371 __FLOG(_L8("DriveNumber - Exit")); |
398 OstTraceFunctionExit0( CMTPSTORAGEMGR_DRIVENUMBER_EXIT ); |
372 return drive; |
399 return drive; |
373 } |
400 } |
374 |
401 |
375 EXPORT_C TInt32 CMTPStorageMgr::FrameworkStorageId(TDriveNumber aDriveNumber) const |
402 EXPORT_C TInt32 CMTPStorageMgr::FrameworkStorageId(TDriveNumber aDriveNumber) const |
376 { |
403 { |
377 __FLOG(_L8("FrameworkStorageId - Entry")); |
404 OstTraceFunctionEntry0( CMTPSTORAGEMGR_FRAMEWORKSTORAGEID_ENTRY ); |
378 TInt32 ret(KErrNotFound); |
405 TInt32 ret(KErrNotFound); |
379 TInt32 id(iMapDriveToStorage[aDriveNumber]); |
406 TInt32 id(iMapDriveToStorage[aDriveNumber]); |
380 if ((id != KErrNotFound) && (LogicalStorageId(id))) |
407 if ((id != KErrNotFound) && (LogicalStorageId(id))) |
381 { |
408 { |
382 ret = id; |
409 ret = id; |
383 } |
410 } |
384 __FLOG(_L8("FrameworkStorageId - Exit")); |
411 OstTraceFunctionExit0( CMTPSTORAGEMGR_FRAMEWORKSTORAGEID_EXIT ); |
385 return ret; |
412 return ret; |
386 } |
413 } |
387 |
414 |
388 EXPORT_C void CMTPStorageMgr::GetAvailableDrivesL(RArray<TDriveNumber>& aDrives) const |
415 EXPORT_C void CMTPStorageMgr::GetAvailableDrivesL(RArray<TDriveNumber>& aDrives) const |
389 { |
416 { |
390 __FLOG(_L8("GetAvailableDrivesL - Entry")); |
417 OstTraceFunctionEntry0( CMTPSTORAGEMGR_GETAVAILABLEDRIVESL_ENTRY ); |
391 aDrives.Reset(); |
418 aDrives.Reset(); |
392 for (TUint i(0); (i < iMapDriveToStorage.Count()); i++) |
419 for (TUint i(0); (i < iMapDriveToStorage.Count()); i++) |
393 { |
420 { |
394 if (iMapDriveToStorage[i] != KErrNotFound) |
421 if (iMapDriveToStorage[i] != KErrNotFound) |
395 { |
422 { |
396 aDrives.AppendL(static_cast<TDriveNumber>(i)); |
423 aDrives.AppendL(static_cast<TDriveNumber>(i)); |
397 } |
424 } |
398 } |
425 } |
399 __FLOG(_L8("GetAvailableDrivesL - Exit")); |
426 OstTraceFunctionExit0( CMTPSTORAGEMGR_GETAVAILABLEDRIVESL_EXIT ); |
400 } |
427 } |
401 |
428 |
402 EXPORT_C void CMTPStorageMgr::GetLogicalStoragesL(const TMTPStorageMgrQueryParams& aParams, RPointerArray<const CMTPStorageMetaData>& aStorages) const |
429 EXPORT_C void CMTPStorageMgr::GetLogicalStoragesL(const TMTPStorageMgrQueryParams& aParams, RPointerArray<const CMTPStorageMetaData>& aStorages) const |
403 { |
430 { |
404 __FLOG(_L8("GetLogicalStoragesL - Entry")); |
431 OstTraceFunctionEntry0( CMTPSTORAGEMGR_GETLOGICALSTORAGESL_ENTRY ); |
405 aStorages.Reset(); |
432 aStorages.Reset(); |
406 const TBool KAllStorages(aParams.StorageSuid() == KNullDesC); |
433 const TBool KAllStorages(aParams.StorageSuid() == KNullDesC); |
407 const TBool KAllStorageSystemTypes(aParams.StorageSystemType() == CMTPStorageMetaData::ESystemTypeUndefined); |
434 const TBool KAllStorageSystemTypes(aParams.StorageSystemType() == CMTPStorageMetaData::ESystemTypeUndefined); |
408 const TUint KCount(iStorages.Count()); |
435 const TUint KCount(iStorages.Count()); |
409 for (TUint i(0); (i < KCount); i++) |
436 for (TUint i(0); (i < KCount); i++) |
434 (!LogicalStorageId(storage.Uint(CMTPStorageMetaData::EStorageId)))) |
461 (!LogicalStorageId(storage.Uint(CMTPStorageMetaData::EStorageId)))) |
435 { |
462 { |
436 aStorages.AppendL(iStorages[i]); |
463 aStorages.AppendL(iStorages[i]); |
437 } |
464 } |
438 } |
465 } |
439 __FLOG(_L8("GetPhysicalStoragesL - Exit")); |
466 OstTraceFunctionExit0( CMTPSTORAGEMGR_GETPHYSICALSTORAGESL_EXIT ); |
440 } |
467 } |
441 |
468 |
442 EXPORT_C TUint32 CMTPStorageMgr::LogicalStorageId(TUint32 aStorageId) const |
469 EXPORT_C TUint32 CMTPStorageMgr::LogicalStorageId(TUint32 aStorageId) const |
443 { |
470 { |
444 __FLOG(_L8("LogicalStorageId - Entry")); |
471 OstTraceFunctionEntry0( CMTPSTORAGEMGR_LOGICALSTORAGEID_TUINT32_ENTRY ); |
445 __FLOG(_L8("LogicalStorageId - Exit")); |
472 OstTraceFunctionExit0( CMTPSTORAGEMGR_LOGICALSTORAGEID_TUINT32_EXIT ); |
446 return (aStorageId & KLogicalIdMask); |
473 return (aStorageId & KLogicalIdMask); |
447 } |
474 } |
448 |
475 |
449 EXPORT_C TInt32 CMTPStorageMgr::LogicalStorageId(const TDesC& aStorageSuid) const |
476 EXPORT_C TInt32 CMTPStorageMgr::LogicalStorageId(const TDesC& aStorageSuid) const |
450 { |
477 { |
451 __FLOG(_L8("LogicalStorageId - Entry")); |
478 OstTraceFunctionEntry0( CMTPSTORAGEMGR_LOGICALSTORAGEID_TDESC_ENTRY ); |
452 TInt32 id(KErrNotFound); |
479 TInt32 id(KErrNotFound); |
453 TInt idx(iStorages.Find(aStorageSuid, StorageKeyMatchSuid)); |
480 TInt idx(iStorages.Find(aStorageSuid, StorageKeyMatchSuid)); |
454 if (idx != KErrNotFound) |
481 if (idx != KErrNotFound) |
455 { |
482 { |
456 id = iStorages[idx]->Uint(CMTPStorageMetaData::EStorageId); |
483 id = iStorages[idx]->Uint(CMTPStorageMetaData::EStorageId); |
457 if (!LogicalStorageId(id)) |
484 if (!LogicalStorageId(id)) |
458 { |
485 { |
459 id = KErrNotFound; |
486 id = KErrNotFound; |
460 } |
487 } |
461 } |
488 } |
462 __FLOG(_L8("LogicalStorageId - Exit")); |
489 OstTraceFunctionExit0( CMTPSTORAGEMGR_LOGICALSTORAGEID_TDESC_EXIT ); |
463 return id; |
490 return id; |
464 } |
491 } |
465 |
492 |
466 EXPORT_C TInt32 CMTPStorageMgr::PhysicalStorageId(TDriveNumber aDriveNumber) const |
493 EXPORT_C TInt32 CMTPStorageMgr::PhysicalStorageId(TDriveNumber aDriveNumber) const |
467 { |
494 { |
468 __FLOG(_L8("PhysicalStorageId - Entry")); |
495 OstTraceFunctionEntry0( CMTPSTORAGEMGR_PHYSICALSTORAGEID_TDRIVENUMBER_ENTRY ); |
469 TInt32 storageId(iMapDriveToStorage[aDriveNumber]); |
496 TInt32 storageId(iMapDriveToStorage[aDriveNumber]); |
470 if (storageId != KErrNotFound) |
497 if (storageId != KErrNotFound) |
471 { |
498 { |
472 storageId = PhysicalStorageId(storageId); |
499 storageId = PhysicalStorageId(storageId); |
473 } |
500 } |
474 __FLOG(_L8("PhysicalStorageId - Exit")); |
501 OstTraceFunctionExit0( CMTPSTORAGEMGR_PHYSICALSTORAGEID_TDRIVENUMBER_EXIT ); |
475 return storageId; |
502 return storageId; |
476 } |
503 } |
477 |
504 |
478 EXPORT_C TUint32 CMTPStorageMgr::PhysicalStorageId(TUint32 aStorageId) const |
505 EXPORT_C TUint32 CMTPStorageMgr::PhysicalStorageId(TUint32 aStorageId) const |
479 { |
506 { |
480 __FLOG(_L8("PhysicalStorageId - Entry")); |
507 OstTraceFunctionEntry0( CMTPSTORAGEMGR_PHYSICALSTORAGEID_TUINT32_ENTRY ); |
481 __FLOG(_L8("PhysicalStorageId - Exit")); |
508 OstTraceFunctionExit0( CMTPSTORAGEMGR_PHYSICALSTORAGEID_TUINT32_EXIT ); |
482 return (aStorageId & KPhysicalIdMask); |
509 return (aStorageId & KPhysicalIdMask); |
483 } |
510 } |
484 |
511 |
485 EXPORT_C const CMTPStorageMetaData& CMTPStorageMgr::StorageL(TUint32 aStorageId) const |
512 EXPORT_C const CMTPStorageMetaData& CMTPStorageMgr::StorageL(TUint32 aStorageId) const |
486 { |
513 { |
487 __FLOG(_L8("StorageL - Entry")); |
514 OstTraceFunctionEntry0( CMTPSTORAGEMGR_STORAGEL_ENTRY ); |
488 TInt idx(iStorages.FindInOrder(aStorageId, StorageOrder)); |
515 TInt idx(iStorages.FindInOrder(aStorageId, StorageOrder)); |
489 User::LeaveIfError(idx); |
516 LEAVEIFERROR(idx, |
490 __FLOG(_L8("StorageL - Exit")); |
517 OstTrace1( TRACE_ERROR, CMTPSTORAGEMGR_STORAGEL, "can't find storage with StorageId %d", idx )); |
|
518 OstTraceFunctionExit0( CMTPSTORAGEMGR_STORAGEL_EXIT ); |
491 return *iStorages[idx]; |
519 return *iStorages[idx]; |
492 } |
520 } |
493 |
521 |
494 EXPORT_C TUint32 CMTPStorageMgr::StorageId(TUint32 aPhysicalStorageId, TUint32 aLogicalStorageId) const |
522 EXPORT_C TUint32 CMTPStorageMgr::StorageId(TUint32 aPhysicalStorageId, TUint32 aLogicalStorageId) const |
495 { |
523 { |
496 __FLOG(_L8("StorageId - Entry")); |
524 OstTraceFunctionEntry0( CMTPSTORAGEMGR_STORAGEID_ENTRY ); |
497 __FLOG(_L8("StorageId - Exit")); |
525 OstTraceFunctionExit0( CMTPSTORAGEMGR_STORAGEID_EXIT ); |
498 return (aPhysicalStorageId | aLogicalStorageId); |
526 return (aPhysicalStorageId | aLogicalStorageId); |
499 } |
527 } |
500 |
528 |
501 EXPORT_C TBool CMTPStorageMgr::ValidStorageId(TUint32 aStorageId) const |
529 EXPORT_C TBool CMTPStorageMgr::ValidStorageId(TUint32 aStorageId) const |
502 { |
530 { |
503 __FLOG(_L8("ValidStorageId - Entry")); |
531 OstTraceFunctionEntry0( CMTPSTORAGEMGR_VALIDSTORAGEID_ENTRY ); |
504 TInt idx(iStorages.FindInOrder(aStorageId, StorageOrder)); |
532 TInt idx(iStorages.FindInOrder(aStorageId, StorageOrder)); |
505 if(KErrNotFound == idx) |
533 if(KErrNotFound == idx) |
506 { |
534 { |
507 __FLOG(_L8("ValidStorageId - False Exit")); |
535 OstTraceFunctionExit0( CMTPSTORAGEMGR_VALIDSTORAGEID_EXIT ); |
508 return EFalse; |
536 return EFalse; |
509 } |
537 } |
510 |
538 |
511 _LIT(KSeperator,"\\"); |
539 _LIT(KSeperator,"\\"); |
512 TBool ret = ETrue; |
540 TBool ret = ETrue; |
528 buf.Append(KSeperator); |
556 buf.Append(KSeperator); |
529 |
557 |
530 ret = BaflUtils::PathExists(iSingletons.Fs(), buf); |
558 ret = BaflUtils::PathExists(iSingletons.Fs(), buf); |
531 } |
559 } |
532 } |
560 } |
533 |
561 |
534 __FLOG(_L8("ValidStorageId - Exit")); |
562 OstTraceFunctionExit0( DUP1_CMTPSTORAGEMGR_VALIDSTORAGEID_EXIT ); |
535 |
|
536 return ret; |
563 return ret; |
537 } |
564 } |
538 |
565 |
539 EXPORT_C CMTPTypeString* CMTPStorageMgr::VolumeIdL(TUint aDataProviderId, TUint32 aStorageId, const TDesC& aVolumeIdSuffix) const |
566 EXPORT_C CMTPTypeString* CMTPStorageMgr::VolumeIdL(TUint aDataProviderId, TUint32 aStorageId, const TDesC& aVolumeIdSuffix) const |
540 { |
567 { |
541 __FLOG(_L8("VolumeIdL - Entry")); |
568 OstTraceFunctionEntry0( CMTPSTORAGEMGR_VOLUMEIDL_ENTRY ); |
542 |
569 |
543 // Validate the StorageId. |
570 // Validate the StorageId. |
544 TUint owner(LogicalStorageId(aStorageId) ? LogicalStorageOwner(aStorageId) : PhysicalStorageOwner(aStorageId)); |
571 TUint owner(LogicalStorageId(aStorageId) ? LogicalStorageOwner(aStorageId) : PhysicalStorageOwner(aStorageId)); |
545 if (!ValidStorageId(aStorageId)) |
572 if (!ValidStorageId(aStorageId)) |
546 { |
573 { |
|
574 OstTrace1( TRACE_ERROR, CMTPSTORAGEMGR_VOLUMEIDL, "invalid storage id %d", aStorageId); |
547 User::Leave(KErrNotFound); |
575 User::Leave(KErrNotFound); |
548 } |
576 } |
549 else if (aDataProviderId != owner) |
577 else if (aDataProviderId != owner) |
550 { |
578 { |
|
579 OstTrace1( TRACE_ERROR, DUP1_CMTPSTORAGEMGR_VOLUMEIDL, "Dp %d not owner", aDataProviderId); |
551 User::Leave(KErrAccessDenied); |
580 User::Leave(KErrAccessDenied); |
552 } |
581 } |
553 |
582 |
554 // Generate a unique volume ID. |
583 // Generate a unique volume ID. |
555 RBuf16 buffer; |
584 RBuf16 buffer; |
564 buffer.Append(aVolumeIdSuffix.Left(KMTPMaxStringCharactersLength - buffer.Length())); |
593 buffer.Append(aVolumeIdSuffix.Left(KMTPMaxStringCharactersLength - buffer.Length())); |
565 } |
594 } |
566 |
595 |
567 CMTPTypeString* volumeId = CMTPTypeString::NewL(buffer); |
596 CMTPTypeString* volumeId = CMTPTypeString::NewL(buffer); |
568 CleanupStack::PopAndDestroy(&buffer); |
597 CleanupStack::PopAndDestroy(&buffer); |
569 __FLOG(_L8("VolumeIdL - Exit")); |
598 OstTraceFunctionExit0( CMTPSTORAGEMGR_VOLUMEIDL_EXIT ); |
570 return volumeId; |
599 return volumeId; |
571 } |
600 } |
572 |
601 |
573 /** |
602 /** |
574 Constructor. |
603 Constructor. |
575 */ |
604 */ |
576 CMTPStorageMgr::CMTPStorageMgr() : |
605 CMTPStorageMgr::CMTPStorageMgr() : |
577 iFrameworkId(KErrNotFound) |
606 iFrameworkId(KErrNotFound) |
578 { |
607 { |
579 |
|
580 } |
608 } |
581 |
609 |
582 /** |
610 /** |
583 Second phase constructor. |
611 Second phase constructor. |
584 @leave One of the system wide error code, if a processing failure occurs. |
612 @leave One of the system wide error code, if a processing failure occurs. |
585 */ |
613 */ |
586 void CMTPStorageMgr::ConstructL() |
614 void CMTPStorageMgr::ConstructL() |
587 { |
615 { |
588 __FLOG_OPEN(KMTPSubsystem, KComponent); |
616 OstTraceFunctionEntry0( CMTPSTORAGEMGR_CONSTRUCTL_ENTRY ); |
589 __FLOG(_L8("ConstructL - Entry")); |
|
590 iSingletons.OpenL(); |
617 iSingletons.OpenL(); |
591 for (TUint i(0); (i < KMaxDrives); i++) |
618 for (TUint i(0); (i < KMaxDrives); i++) |
592 { |
619 { |
593 iMapDriveToStorage[i] = KErrNotFound; |
620 iMapDriveToStorage[i] = KErrNotFound; |
594 } |
621 } |
595 __FLOG(_L8("ConstructL - Exit")); |
622 OstTraceFunctionExit0( CMTPSTORAGEMGR_CONSTRUCTL_EXIT ); |
596 } |
623 } |
597 |
624 |
598 /** |
625 /** |
599 Allocates a new 32-bit logical StorageId for the storage owner as a partition |
626 Allocates a new 32-bit logical StorageId for the storage owner as a partition |
600 of the specified physical MTP StorageID. |
627 of the specified physical MTP StorageID. |