diff -r 26673e532f65 -r 159fc2f68139 ImagePrint/ImagePrintEngine/DeviceProtocols/dpof/src/cfilemanager.cpp --- a/ImagePrint/ImagePrintEngine/DeviceProtocols/dpof/src/cfilemanager.cpp Tue May 25 12:42:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,256 +0,0 @@ -/* -* Copyright (c) 2004-2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - -#include "cfilemanager.h" -#include "rsutils.h" -#include "clog.h" - -// CONSTANTS -namespace - { - const TInt KBufferSize = 1000; - } - -#define USE_CFILEMAN_FIRST - -CFileManager* CFileManager::NewL( RFs& aFs ) - { - CFileManager* self = new ( ELeave ) CFileManager( aFs ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop(); // self - return self; - } - -CFileManager::CFileManager( RFs& aFs ) : CActive( CActive::EPriorityHigh ), - iFs( aFs ), - iBuffer( NULL ) - - { - CActiveScheduler::Add( this ); - } - -CFileManager::~CFileManager() - { - Cancel(); - CloseCopy(); - if(iBuffer) - { - delete iBuffer; - iBuffer = NULL; - } - delete iFileMan; - } - -void CFileManager::ConstructL() - { - iFileMan = CFileMan::NewL( iFs ); - } - - -TInt CFileManager::Copy( const TDesC& aFile, const TDesC& aDir, TRequestStatus& aStatus ) - { - LOG( "CFileManager::Copy begin" ); - Cancel(); - CloseCopy(); - iCallerStatus = &aStatus; - TInt err( KErrNone ); -#ifdef USE_CFILEMAN_FIRST - // check if file is used by another application - err = iSource.Open( iFs, aFile, EFileRead | EFileShareReadersOnly ); - LOG1("CFileManager::Copy check err: %d", err); - iSource.Close(); - if( !err ) - { - err = iFileMan->Copy( aFile, aDir, CFileMan::EOverWrite, iStatus ); - LOG1("CFileManager::Copy iFileMan->Copy err: %d", err); - if( !err ) - { - iOperation = EFileManCopy; - SetActive(); - } - } - else -#endif - { - iOperation = EBufferCopy; - TRAP( err, InitCopyL( aFile, aDir ) ); - LOG1( "CFileManager::Copy InitCopyL err: %d", err ); - if( err ) - { - CloseCopy(); - } - else - { - TPtr8 ptr = iBuffer->Des(); - LOG1( "CFileManager::Copy iBytesNum: %d", iBytesNum ); - iSource.Read( ptr, iBytesNum, iStatus ); - LOG( "CFileManager::Copy call to SetActive()" ); - SetActive(); - } - } - LOG1( "CFileManager::Copy end with: %d", err ); - return err; - } - - -void CFileManager::DoCancel() - { - LOG( "CFileManager::DoCancel begin" ); - CloseCopy(); - LOG( "CFileManager::DoCancel end" ); - } - -void CFileManager::RunL() - { - LOG1( "CFileManager::RunL iStatus: %d", iStatus.Int() ); - LOG1( "CFileManager::RunL iOperation: %d", iOperation ); - - if( iStatus == KErrNone ) - { - switch( iOperation ) - { - case ERemoveDir: - { - LOG( "CFileManager::RunL directory removed" ); - User::RequestComplete( iCallerStatus, iStatus.Int() ); - } - break; - case EFileManCopy: - { - LOG( "CFileManager::RunL file copied" ); - User::RequestComplete( iCallerStatus, iStatus.Int() ); - } - break; - case EBufferCopy: - { - TPtr8 ptr = iBuffer->Des(); - LOG( "CFileManager::RunL call to RFile::Write()" ); - User::LeaveIfError( iDest.Write( ptr, iBytesNum ) ); - iBytesLeft -= iBytesNum; - if( iBytesLeft ) - { - iBytesNum = ( KBufferSize < iBytesLeft ) ? KBufferSize : iBytesLeft; - LOG1( "CFileManager::RunL iBytesLeft: %d", iBytesLeft ); - iSource.Read( ptr, iBytesNum, iStatus ); - SetActive(); - } - else - { - User::LeaveIfError( iDest.Flush() ); - CloseCopy(); - LOG( "CFileManager::RunL file copied" ); - User::RequestComplete( iCallerStatus, iStatus.Int() ); - } - } - break; - default: - break; - } - } - else - { - CloseCopy(); - User::RequestComplete( iCallerStatus, iStatus.Int() ); - } - } - -TInt CFileManager::RunError( TInt aError ) - { - LOG1( "CFileManager::RunError aError: %d", aError ); - return KErrNone; - } - -void CFileManager::CloseCopy() - { - LOG( "CFileManager::CloseCopy begin" ); - iSource.Close(); - iDest.Close(); - delete iBuffer; - iBuffer = NULL; - iBytesLeft = 0; - iBytesNum = 0; - LOG( "CFileManager::CloseCopy end" ); - } - -void CFileManager::InitCopyL( const TDesC& aFile, const TDesC& aDir ) - { - LOG( "CFileManager::InitCopyL begin" ); - TInt err = iSource.Open( iFs, aFile, EFileRead | EFileShareReadersOnly ); - LOG1("CFileManager::InitCopyL file.Open (shareread mode): %d", err); - if ( err != KErrNone ) - { - err = iSource.Open( iFs, aFile, EFileRead | EFileShareAny ); - LOG1("CFileManager::InitCopyL file.Open (shareany mode): %d", err); - } - User::LeaveIfError( err ); - - TParsePtrC parse( aFile ); - TFileName writeFileName( aDir ); - writeFileName.Append( parse.NameAndExt() ); - User::LeaveIfError( iDest.Replace( iFs, writeFileName, EFileWrite ) ); - iBuffer = HBufC8::NewL( KBufferSize ); - User::LeaveIfError( iSource.Size( iBytesLeft ) ); - LOG1( "CFileManager::InitCopyL file size: %d", iBytesLeft ); - iBytesNum = ( KBufferSize < iBytesLeft ) ? KBufferSize : iBytesLeft; - LOG( "CFileManager::InitCopyL end" ); - } - -void CFileManager::CancelCopy() - { - LOG("CFileManager::CancelCopy begin"); - if( IsActive() ) - { - Cancel(); - User::RequestComplete( iCallerStatus, KErrCancel ); - } - LOG("CFileManager::CancelCopy end"); - } - -void CFileManager::CancelRmDir() - { - LOG("CFileManager::CancelRmDir begin"); - if( IsActive() ) - { - Cancel(); - User::RequestComplete( iCallerStatus, KErrCancel ); - } - LOG("CFileManager::CancelRmDir end"); - } - -TInt CFileManager::RmDir( const TDesC& aDir, TRequestStatus& aStatus ) - { - LOG1("CFileManager::RmDir aDir: %S", &aDir); - TInt err( KErrNone ); - Cancel(); - iCallerStatus = &aStatus; - if( RsUtils::PathExists( aDir, iFs ) ) - { - err = iFileMan->RmDir( aDir, iStatus ); - iOperation = ERemoveDir; - if( !err ) SetActive(); - } - else - { - User::RequestComplete( iCallerStatus, KErrNone ); - } - LOG1("CFileManager::RmDir return: %d", err); - return err; - } - -// End of File