diff -r d45095c2f4f3 -r bee149131e4b mmappcomponents/harvester/filehandler/src/mpxharvesterdb.cpp --- a/mmappcomponents/harvester/filehandler/src/mpxharvesterdb.cpp Tue Feb 02 00:27:58 2010 +0200 +++ b/mmappcomponents/harvester/filehandler/src/mpxharvesterdb.cpp Fri Feb 19 23:18:32 2010 +0200 @@ -31,8 +31,12 @@ // --------------------------------------------------------------------------- // CMPXHarvesterDB::CMPXHarvesterDB( TDriveNumber aDrive, RFs& aFs ) : - iDrive( aDrive), - iFs( aFs ) + iDrive( aDrive), + iFs( aFs ) +#ifdef __RAMDISK_PERF_ENABLE + ,iRamDrive(aDrive), + iUseRamDrive(EFalse) +#endif // __RAMDISK_PERF_ENABLE { } @@ -75,7 +79,7 @@ // TInt CMPXHarvesterDB::OpenL() { - MPX_DEBUG1("CMPXHarvesterDB::OpenL <---"); + MPX_FUNC("CMPXHarvesterDB::OpenL"); // There is no need to re-open if it was already open if( iDBOpen ) @@ -84,18 +88,11 @@ } TInt rtn( KErrNone ); - TDriveUnit drive( iDrive ); - TFileName fileName; - fileName.Append( drive.Name() ); - fileName.Append( KHarvesterDBPath ); - - // Make sure Path exists - if (!BaflUtils::PathExists(iFs, fileName)) - { - iFs.MkDirAll(fileName); - } - - fileName.Append( KHarvesterDBName ); + TFileName fileName = GenerateDbName(); + TParsePtr fileParser( fileName ); + TFileName filePath = fileParser.DriveAndPath(); + // Make sure Path exists; allow to leave if can't create the path + BaflUtils::EnsurePathExistsL(iFs, filePath); // Try to open the stream TRAPD( err, @@ -107,20 +104,9 @@ if( err ) { MPX_DEBUG2("CMPXHarvesterDB::OpenL -- New database %i", err); - - TRAPD( openErr, - iStore = CPermanentFileStore::ReplaceL(iFs, fileName ,EFileRead|EFileWrite); - iStore->SetTypeL(iStore->Layout()); - CreateDBL(); - iDBOpen = ETrue; - ); - - if( KErrNone != openErr ) - { - iDBOpen = EFalse; - User::Leave( openErr ); - } - + iStore = CPermanentFileStore::ReplaceL(iFs, fileName ,EFileRead|EFileWrite); + iStore->SetTypeL(iStore->Layout()); + CreateDBL(); // If the open stream error was not found, that is fine // because it is a new db, other errors means the stream // is corrupted @@ -131,9 +117,8 @@ { MPX_DEBUG1("CMPXHarvesterDB::OpenL -- Opening database" ); rtn = OpenDBL(); - iDBOpen = ETrue; } - + iDBOpen = ETrue; // Check volume Id // @@ -160,7 +145,6 @@ rtn = OpenL(); } - MPX_DEBUG1("CMPXHarvesterDB::OpenL --->"); return rtn; } @@ -196,15 +180,26 @@ MPX_DEBUG1("CMPXHarvesterDB::CreateDBL <---"); // remove old databases before creating/replacing new database - - TFileName dbFileName; - TDriveUnit drive( iDrive ); - dbFileName.Append( drive.Name() ); - dbFileName.Append( KHarvesterDBPath ); - dbFileName.Append( KHarvesterDBPattern ); + TFileName fileName = GenerateDbName(); + TParsePtr fileParser( fileName ); + TFileName filePath = fileParser.DriveAndPath(); +#ifdef __RAMDISK_PERF_ENABLE + if ( iUseRamDrive ) + { + TDriveUnit drive( iDrive ); + filePath.Append(drive.Name()[0]); + filePath.Append(KHarvesterDBPattern); + } + else + { +#endif // __RAMDISK_PERF_ENABLE + filePath.Append( KHarvesterDBPattern ); +#ifdef __RAMDISK_PERF_ENABLE + } +#endif // __RAMDISK_PERF_ENABLE CFileMan* fileManager = CFileMan::NewL(iFs); - TInt ret = fileManager->Delete(dbFileName); + TInt ret = fileManager->Delete(filePath); delete fileManager; fileManager = NULL; @@ -474,12 +469,7 @@ // TInt CMPXHarvesterDB::DeleteDatabase() { - TDriveUnit drive( iDrive ); - TFileName fileName; - fileName.Append( drive.Name() ); - fileName.Append( KHarvesterDBPath ); - fileName.Append( KHarvesterDBName ); - + TFileName fileName = GenerateDbName(); return iFs.Delete( fileName ); } @@ -607,4 +597,127 @@ iDatabase->Rollback(); } +#ifdef __RAMDISK_PERF_ENABLE +// --------------------------------------------------------------------------- +// Set RAM drive info +// --------------------------------------------------------------------------- +// +void CMPXHarvesterDB::SetRamDriveInfo(TDriveNumber aDrive, TBool aUseRamDrive) + { + MPX_FUNC("CMPXHarvesterDB::SetRamDriveInfo"); + iRamDrive = aDrive; + iUseRamDrive = aUseRamDrive; + } + +// --------------------------------------------------------------------------- +// Get UseRamDrive +// --------------------------------------------------------------------------- +// +TBool CMPXHarvesterDB::IsUseRamDrive() + { + MPX_FUNC("CMPXHarvesterDB::IsUseRamDrive"); + return iUseRamDrive; + } + +// --------------------------------------------------------------------------- +// Get the state of the database. +// --------------------------------------------------------------------------- +// +TDbState CMPXHarvesterDB::GetDbState() + { + MPX_FUNC("CMPXHarvesterDB::GetDbState"); + TDbState state = EDbClose; + if ( InTransaction() ) + { + state = EDbInTransaction; + } + else if ( iDBOpen ) + { + state = EDbOpen; + } + + MPX_DEBUG2("CMPXHarvesterDB::GetDbState state = %d", state ); + return state; + } + +// --------------------------------------------------------------------------- +// Set the state of the database. +// --------------------------------------------------------------------------- +// +void CMPXHarvesterDB::SetDbStateL( TDbState aState ) + { + MPX_FUNC("CMPXHarvesterDB::SetDbState"); + MPX_DEBUG2("CMPXHarvesterDB::SetDbState state = %d", aState ); + + switch( aState ) + { + case EDbClose: + { + if ( InTransaction() ) + { + CommitL(); + } + Close(); + break; + } + case EDbOpen: + { + if ( InTransaction() ) + { + CommitL(); + } + OpenL(); + break; + } + case EDbInTransaction: + { + if ( !InTransaction() ) + { + OpenL(); + BeginL(); + } + break; + } + default: + { + // should never get here + User::Leave(KErrNotSupported); + } + } + } + +#endif // __RAMDISK_PERF_ENABLE + +// --------------------------------------------------------------------------- +// Generate the database name +// --------------------------------------------------------------------------- +// +TFileName CMPXHarvesterDB::GenerateDbName() + { + MPX_FUNC("CMPXHarvesterDB::GenerateDbName"); + TFileName fileName; +#ifdef __RAMDISK_PERF_ENABLE + if ( iUseRamDrive ) + { + TDriveUnit ramDrive( iRamDrive ); + fileName.Append( ramDrive.Name() ); + fileName.Append( KHarvesterDBPath ); + TDriveUnit drive( iDrive ); + fileName.Append(drive.Name()[0]); + fileName.Append(KHarvesterDBName); + } + else + { +#endif // __RAMDISK_PERF_ENABLE + TDriveUnit drive( iDrive ); + fileName.Append( drive.Name() ); + fileName.Append( KHarvesterDBPath ); + fileName.Append( KHarvesterDBName ); +#ifdef __RAMDISK_PERF_ENABLE + } +#endif // __RAMDISK_PERF_ENABLE + MPX_DEBUG2("CMPXHarvesterDB::GenerateDbName file name = %S", &fileName ); + return fileName; + } + // End of file