diff -r 5294c000a26d -r 112a725ff2c2 videocollection/mpxmyvideoscollection/inc/vcxmyvideosasyncfilecopy.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videocollection/mpxmyvideoscollection/inc/vcxmyvideosasyncfilecopy.h Wed Mar 31 21:34:36 2010 +0300 @@ -0,0 +1,180 @@ +/* +* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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: Asynchronous file copy, implemented with several small sync block copies.* +*/ + + + + +#ifndef VCXMYVIDEOSASYNCFILECOPY_H +#define VCXMYVIDEOSASYNCFILECOPY_H + +// INCLUDES + +// FORWARD DECLARATIONS + +// CONSTANTS + +// CLASS DECLARATION + +/** +* @lib mpxmyvideoscollectionplugin.lib +*/ +NONSHARABLE_CLASS(CVcxMyVideosAsyncFileCopy) : + public CBase + { + public: // Constructors and destructor + + /** + * Two-phased constructor + * @return object constructed + */ + static CVcxMyVideosAsyncFileCopy* NewL( RFs& aFs ); + + /** + * Destructor + */ + virtual ~CVcxMyVideosAsyncFileCopy(); + + public: + /** + * Copies aSourceFileName to aSourceFileName. Leaves with KErrNotReady + * if there is already copy operation going on. + * + * @param aSourceFileName Full path and name of the source file. + * @param aTargetFileName Full path and name of the target file. + * @return ETrue if copy was finished. If EFalse, then + * user must do DoNextBlockCopyL calls to + * continue copying. + */ + TBool CopyL( const TDesC& aSourceFileName, const TDesC& aTargetFileName ); + + /** + * Checks if there is copy going on. + * + * @return ETrue if copy is going on, EFalse otherwise. + */ + TBool CopyIsOngoing(); + + /** + * Copies next block from the current copy operation. + * + * @return System wide error code. + */ + TInt DoNextBlockCopy(); + + /** + * Cancels current copy operation (if any). Does nothing if copy + * operation is not going on. Cancel removes the possible target file + * which has been created during the current copy operation. + */ + void Cancel(); + + private: + /** + * Constructor + */ + CVcxMyVideosAsyncFileCopy( RFs& aFs ); + + /** + * Symbian 2nd phase constructor. + */ + void ConstructL (); + + /** + * Allocates buffer from RAM (iFileBlockBuffer) for a file block. + * + * @param aFileSize Size of the file to be copied. + */ + void AllocateFileBlockBufferL( TInt aFileSize ); + + /** + * Closes file handles and resets variables. + * + * @param aRemoveTargetFile If ETrue then the target file is removed. + */ + void EndCopy( TBool aRemoveTargetFile ); + + private: + + /** + * File server session. + */ + RFs& iFs; + +#ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API + + /** + * File in which we are copying from. + */ + RFile64 iSourceFile; + + /** + * File which is being copied to. + */ + RFile64 iTargetFile; + + /** + * How much data is left for copying. + */ + TInt64 iDataRemaining; + + /** + * Current read position in source file. + */ + TInt64 iReadPos; +#else + + /** + * File in which we are copying from. + */ + RFile iSourceFile; + + /** + * File which is being copied to. + */ + RFile iTargetFile; + + /** + * How much data is left for copying. + */ + TInt iDataRemaining; + + /** + * Current read position in source file. + */ + TInt iReadPos; + +#endif + /** + * Set to ETrue when copy starts and EFalse when copying ends. + */ + TBool iIsCopying; + + /** + * Space for the one file block. Own + */ + HBufC8* iFileBlockBuffer; + +#ifdef _DEBUG + /** + * Used to calculate copying speed. + */ + TTime iStartTime; +#endif + }; + +#endif // VCXMYVIDEOSASYNCFILECOPY_H + +