diff -r e1bea15f9a39 -r 79859ed3eea9 browserutilities/downloadmgr/DownloadMgrServEng/Src/HttpStorage.cpp --- a/browserutilities/downloadmgr/DownloadMgrServEng/Src/HttpStorage.cpp Thu Aug 19 10:58:56 2010 +0300 +++ b/browserutilities/downloadmgr/DownloadMgrServEng/Src/HttpStorage.cpp Tue Aug 31 16:17:46 2010 +0300 @@ -19,7 +19,7 @@ // INCLUDE FILES #include -#include +#include #include "FileExt.h" #include "HttpClientApp.h" @@ -30,9 +30,9 @@ #include "HeaderField.h" #include "BuffStorage.h" -#include +#include #include -#include +#include #ifdef __SYNCML_DM_FOTA #include @@ -70,58 +70,6 @@ // FORWARD DECLARATIONS //class ?FORWARD_CLASSNAME; -//Music Store Warning Level Feature Flag -#ifdef DOWNLOADMGR_WARNINGLEVEL_ENABLED_FF - -#include -#include - -//Beside the OOD threshold value, we need to reserve extra disk space -//for harvest server do the harvest, set this as 1M -const TInt KFreeSpaceExtraReserved(1024*1024); - -static TBool CheckFreeSpaceWarningThreshold( RFs& aFs, TInt aBytesToWrite, TInt aDrive ) - { - TBool isSpace = EFalse; - CRepository* repository = NULL; - TInt64 thresholdValue( 0 ); - TVolumeInfo volumeInfo; - TInt err = aFs.Volume( volumeInfo, aDrive ); - if ( err == KErrNone ) // get warning threshold - { - TRAP( err, repository = CRepository::NewL( KCRUidUiklaf ) ); - } - if ( err == KErrNone ) - { - if ( volumeInfo.iDrive.iDriveAtt & KDriveAttRemovable ) // for E and F - { - TInt warningValue( 0 ); - err = repository->Get( KUikOODDiskFreeSpaceWarningNoteLevelMassMemory, warningValue ); - if ( err == KErrNone ) - { - thresholdValue = warningValue + KFreeSpaceExtraReserved; - } - } - else - { - TInt warningUsagePercent( 0 ); - err = repository->Get( KUikOODDiskFreeSpaceWarningNoteLevel, warningUsagePercent ); - if ( err == KErrNone ) - { - thresholdValue = ( ( volumeInfo.iSize * ( 100 - warningUsagePercent ) ) / 100 ) - + KFreeSpaceExtraReserved; - } - } - delete repository; - } - if ( err == KErrNone ) // Check warning threshold - { - isSpace = volumeInfo.iFree > thresholdValue + aBytesToWrite; - } - return isSpace; - } -#endif - // ============================ MEMBER FUNCTIONS =============================== // ----------------------------------------------------------------------------- @@ -748,26 +696,19 @@ } CleanupStack::PopAndDestroy( drivesDynList ); CLOG_WRITE_2( "Saving content to %d Drive with %d B free space", driveSpaceMax, freeSpaceMax ); - TUint aStatus ; - - if( KErrNone == DriveInfo::GetDriveStatus( iDownload->ClientApp()->Engine()->Fs(), driveSpaceMax , aStatus )) - { - iRemovableStatus = (aStatus & DriveInfo::EDriveExternallyMountable) ? aStatus : 0 ; - if( iRemovableStatus ) - { - iRemovableStatus = (aStatus & DriveInfo::EDriveRemovable) ? KDriveAttRemovable : KDriveAttInternal ; - } - else - { - iRemovableStatus = KDriveAttLocal ; - } - CLOG_WRITE_1( "Removable: [%d]", iRemovableStatus ); - CLOG_WRITE_1( "DriveInfo Status [%d]", aStatus ); - } - else - { - CLOG_WRITE("DriveStatus failed"); - } + + TDriveInfo driveInfo; + + if( !iDownload->ClientApp()->Engine()->Fs().Drive( driveInfo, driveSpaceMax) ) + { + iRemovableDest = (driveInfo.iDriveAtt & KDriveAttRemovable); + CLOG_WRITE_1( "Removable: [%d]", iRemovableDest ); + CLOG_WRITE_1( "driveInfo.iDriveAtt: [%d]", driveInfo.iDriveAtt ); + } + else + { + CLOG_WRITE("DriveInfo failed"); + } return driveSpaceMax; #else @@ -781,7 +722,6 @@ ( &fs, bytesToWrite ); ) if(!mmcOk) { - iRemovableStatus = KDriveAttInternal ; CLOG_WRITE( "no MMC present" ); return EDriveC; } @@ -792,9 +732,7 @@ fs.Volume(volInfoE,EDriveE); TInt64 freeC = volInfoC.iFree;//free memory available in that drive TInt64 freeE = volInfoE.iFree; - freeC = freeE?EDriveC:EDriveE;//put the file in which ever drive has more memory - iRemovableStatus = (EDriveC == freeC) ? KDriveAttInternal : KDriveAttRemovable ; - return freeC; + return freeC>=freeE?EDriveC:EDriveE;//put the file in which ever drive has more memory #endif } @@ -844,7 +782,6 @@ if (bytesToWrite < 0) bytesToWrite = 0; - // Let client handle warning level check, client may want to write until critical level TRAP( err, isSpace = !SysUtil::DiskSpaceBelowCriticalLevelL( &iDownload->ClientApp()->Engine()->Fs(), bytesToWrite, @@ -858,98 +795,46 @@ #else TPtrC drives( iDownload->ClientApp()->Engine()->iDriveLettersCenRep ); #endif -//Music Store Warning Level Feature Flag -#ifdef DOWNLOADMGR_WARNINGLEVEL_ENABLED_FF - // Check warning or critical level and change drive if warning or critical level would get crossed - // On first round, check warning level only - // On second round (all drives are about to cross warning level), check critical level - // When crossing warning level, user will see warning note regarding low disk space - for( TInt j = 0; j < 2 && (err || !isSpace); ++j ) + + // drive letters are separated by semicolons + for( TInt i = 0; i < drives.Length() && (err || !isSpace); i = i + 2 ) { -#endif - // drive letters are separated by semicolons - for( TInt i = 0; i < drives.Length() && (err || !isSpace); i = i + 2 ) + if( (err = fs.CharToDrive( drives[i], drive )) == KErrNone ) { - if( (err = fs.CharToDrive( drives[i], drive )) == KErrNone ) - { - currentDownloadsLen = DMSrvEngine->AllDownloadsSizeInDriveL(iDownload, drive); - // Check if there's enough memory in the phone - bytesToWrite = iLength + currentDownloadsLen; - if (bytesToWrite < 0) - bytesToWrite = 0; -//Music Store Warning Level Feature Flag -#ifdef DOWNLOADMGR_WARNINGLEVEL_ENABLED_FF + currentDownloadsLen = DMSrvEngine->AllDownloadsSizeInDriveL(iDownload, drive); - if ( !j ) // check warning level on first round - { - isSpace = CheckFreeSpaceWarningThreshold( fs, bytesToWrite, drive ); - } - else // check critical level when all drives are about to cross warning level - { - TRAP( err, isSpace = !SysUtil::DiskSpaceBelowCriticalLevelL( - &fs, bytesToWrite, drive )); - } - CLOG_WRITE8_4( "Free space check type %d drive %d isSpace %d, bytesToWrite %d", - j,drive,isSpace,bytesToWrite); -#else if - TRAP( err, isSpace = !SysUtil::DiskSpaceBelowCriticalLevelL( - &fs, bytesToWrite, drive )); - -#endif - } - else - { - CLOG_WRITE8_1( "Bad drive letter [%c]", drives[i] ); - } + // Check if there's enough memory in the phone + bytesToWrite = iLength + currentDownloadsLen; + if (bytesToWrite < 0) + bytesToWrite = 0; + + TRAP( err, isSpace = !SysUtil::DiskSpaceBelowCriticalLevelL( + &fs, + bytesToWrite, + drive )); } -//Music Store Warning Level Feature Flag -#ifdef DOWNLOADMGR_WARNINGLEVEL_ENABLED_FF + else + { + CLOG_WRITE8_1( "Bad drive letter [%c]", drives[i] ); + } } -#endif #ifdef RD_MULTIPLE_DRIVE CleanupStack::PopAndDestroy( drivesDynList ); #endif } -#ifdef RD_MULTIPLE_DRIVE - TUint aStatus ; - - if( KErrNone == DriveInfo::GetDriveStatus( iDownload->ClientApp()->Engine()->Fs(), drive , aStatus )) - { - iRemovableStatus = (aStatus & DriveInfo::EDriveExternallyMountable) ? aStatus : 0 ; - if( iRemovableStatus ) - { - iRemovableStatus = (aStatus & DriveInfo::EDriveRemovable) ? KDriveAttRemovable : KDriveAttInternal ; - } - else - { - iRemovableStatus = KDriveAttLocal ; - } - CLOG_WRITE_1( "Removable: [%d]", iRemovableStatus ); - CLOG_WRITE_1( "DriveInfo Status [%d]", aStatus ); - } - else - { - CLOG_WRITE("DriveStatus failed"); - } - -#else TDriveInfo driveInfo; if( !iDownload->ClientApp()->Engine()->Fs().Drive( driveInfo, drive) ) { - if (driveInfo.iDriveAtt & KDriveAttRemovable) - iRemovableStatus = KDriveAttRemovable ; - else - iRemovableStatus = KDriveAttInternal ; - CLOG_WRITE_1( "Removable: [%d]", iRemovableStatus ); + iRemovableDest = (driveInfo.iDriveAtt & KDriveAttRemovable); + CLOG_WRITE_1( "Removable: [%d]", iRemovableDest ); } else - { + { CLOG_WRITE("DriveInfo failed"); } -#endif - + if( err || !isSpace ) { CLOG_WRITE8( "OOD1" ); @@ -1122,44 +1007,16 @@ TInt drive; if( !iDownload->ClientApp()->Engine()->Fs().CharToDrive((*iDestFilename)[0], drive) ) { -#ifdef RD_MULTIPLE_DRIVE - TUint aStatus ; - - if( KErrNone == DriveInfo::GetDriveStatus( iDownload->ClientApp()->Engine()->Fs(), drive , aStatus )) + TDriveInfo driveInfo; + if( !iDownload->ClientApp()->Engine()->Fs().Drive( driveInfo, drive) ) { - iRemovableStatus = (aStatus & DriveInfo::EDriveExternallyMountable) ? aStatus : 0 ; - if( iRemovableStatus ) - { - iRemovableStatus = (aStatus & DriveInfo::EDriveRemovable) ? KDriveAttRemovable : KDriveAttInternal ; - } - else - { - iRemovableStatus = KDriveAttLocal ; - } - CLOG_WRITE_1( "Removable: [%d]", iRemovableStatus ); - CLOG_WRITE_1( "DriveInfo Status [%d]", aStatus ); + iRemovableDest = (driveInfo.iDriveAtt & KDriveAttRemovable); + CLOG_WRITE_1( "Removable: [%d]", iRemovableDest ); } else { - CLOG_WRITE("DriveStatus failed"); + CLOG_WRITE("DriveInfo failed"); } - -#else - TDriveInfo driveInfo; - - if( !iDownload->ClientApp()->Engine()->Fs().Drive( driveInfo, drive) ) - { - if (driveInfo.iDriveAtt & KDriveAttRemovable) - iRemovableStatus = KDriveAttRemovable ; - else - iRemovableStatus = KDriveAttInternal ; - CLOG_WRITE_1( "Removable: [%d]", iRemovableStatus ); - } - else - { - CLOG_WRITE("DriveInfo failed"); - } -#endif } else { @@ -1186,7 +1043,7 @@ APPEND_BUF_INT( aBuf, iDownloadedSize); AppendBufL( aBuf, iDdFilename ); APPEND_BUF_INT( aBuf, iDownload->iMoLength ); - APPEND_BUF_INT( aBuf, iRemovableStatus ); + APPEND_BUF_INT( aBuf, iRemovableDest ); } @@ -1208,7 +1065,7 @@ READ_INT_L( aInFile, iDownloadedSize ); ReadHBufCL( aInFile, iDdFilename ); READ_INT_L( aInFile, iDownload->iMoLength ); - READ_INT_L( aInFile, iRemovableStatus ); + READ_INT_L( aInFile, iRemovableDest ); }