videocollection/mpxmyvideoscollection/inc/vcxmyvideosasyncfilecopy.h
author hgs
Fri, 14 May 2010 15:14:51 +0300
changeset 38 ff53afa8ad05
parent 35 3738fe97f027
permissions -rw-r--r--
201019
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
35
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of the License "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:    Asynchronous file copy, implemented with several small sync block copies.*
hgs
parents:
diff changeset
    15
*/
hgs
parents:
diff changeset
    16
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
#ifndef VCXMYVIDEOSASYNCFILECOPY_H
hgs
parents:
diff changeset
    21
#define VCXMYVIDEOSASYNCFILECOPY_H
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
// INCLUDES
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
// FORWARD DECLARATIONS
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
// CONSTANTS
hgs
parents:
diff changeset
    28
hgs
parents:
diff changeset
    29
// CLASS DECLARATION
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
/**
hgs
parents:
diff changeset
    32
* @lib mpxmyvideoscollectionplugin.lib
hgs
parents:
diff changeset
    33
*/
hgs
parents:
diff changeset
    34
NONSHARABLE_CLASS(CVcxMyVideosAsyncFileCopy) :
hgs
parents:
diff changeset
    35
    public CBase
hgs
parents:
diff changeset
    36
    {    
hgs
parents:
diff changeset
    37
    public: // Constructors and destructor
hgs
parents:
diff changeset
    38
hgs
parents:
diff changeset
    39
        /**
hgs
parents:
diff changeset
    40
        * Two-phased constructor
hgs
parents:
diff changeset
    41
        * @return object constructed
hgs
parents:
diff changeset
    42
        */
hgs
parents:
diff changeset
    43
        static CVcxMyVideosAsyncFileCopy* NewL( RFs& aFs );
hgs
parents:
diff changeset
    44
hgs
parents:
diff changeset
    45
        /**
hgs
parents:
diff changeset
    46
        * Destructor
hgs
parents:
diff changeset
    47
        */
hgs
parents:
diff changeset
    48
        virtual ~CVcxMyVideosAsyncFileCopy();
hgs
parents:
diff changeset
    49
hgs
parents:
diff changeset
    50
    public:
hgs
parents:
diff changeset
    51
        /**
hgs
parents:
diff changeset
    52
        * Copies aSourceFileName to aSourceFileName. Leaves with KErrNotReady
hgs
parents:
diff changeset
    53
        * if there is already copy operation going on.
hgs
parents:
diff changeset
    54
        *
hgs
parents:
diff changeset
    55
        * @param aSourceFileName  Full path and name of the source file.
hgs
parents:
diff changeset
    56
        * @param aTargetFileName  Full path and name of the target file.
hgs
parents:
diff changeset
    57
        * @return                 ETrue if copy was finished. If EFalse, then
hgs
parents:
diff changeset
    58
        *                         user must do DoNextBlockCopyL calls to
hgs
parents:
diff changeset
    59
        *                         continue copying.
hgs
parents:
diff changeset
    60
        */
hgs
parents:
diff changeset
    61
        TBool CopyL( const TDesC& aSourceFileName, const TDesC& aTargetFileName );
hgs
parents:
diff changeset
    62
        
hgs
parents:
diff changeset
    63
        /**
hgs
parents:
diff changeset
    64
        * Checks if there is copy going on.
hgs
parents:
diff changeset
    65
        *
hgs
parents:
diff changeset
    66
        * @return ETrue if copy is going on, EFalse otherwise.
hgs
parents:
diff changeset
    67
        */
hgs
parents:
diff changeset
    68
        TBool CopyIsOngoing();
hgs
parents:
diff changeset
    69
        
hgs
parents:
diff changeset
    70
        /**
hgs
parents:
diff changeset
    71
        * Copies next block from the current copy operation.
hgs
parents:
diff changeset
    72
        *
hgs
parents:
diff changeset
    73
        * @return System wide error code.
hgs
parents:
diff changeset
    74
        */
hgs
parents:
diff changeset
    75
        TInt DoNextBlockCopy();
hgs
parents:
diff changeset
    76
hgs
parents:
diff changeset
    77
        /**
hgs
parents:
diff changeset
    78
        * Cancels current copy operation (if any). Does nothing if copy
hgs
parents:
diff changeset
    79
        * operation is not going on. Cancel removes the possible target file
hgs
parents:
diff changeset
    80
        * which has been created during the current copy operation.
hgs
parents:
diff changeset
    81
        */
hgs
parents:
diff changeset
    82
        void Cancel();
hgs
parents:
diff changeset
    83
        
hgs
parents:
diff changeset
    84
    private:
hgs
parents:
diff changeset
    85
        /**
hgs
parents:
diff changeset
    86
        * Constructor
hgs
parents:
diff changeset
    87
        */
hgs
parents:
diff changeset
    88
        CVcxMyVideosAsyncFileCopy( RFs& aFs );
hgs
parents:
diff changeset
    89
hgs
parents:
diff changeset
    90
        /**
hgs
parents:
diff changeset
    91
        * Symbian 2nd phase constructor.
hgs
parents:
diff changeset
    92
        */
hgs
parents:
diff changeset
    93
        void ConstructL ();
hgs
parents:
diff changeset
    94
        
hgs
parents:
diff changeset
    95
        /**
hgs
parents:
diff changeset
    96
        * Allocates buffer from RAM (iFileBlockBuffer) for a file block.
hgs
parents:
diff changeset
    97
        * 
hgs
parents:
diff changeset
    98
        * @param aFileSize  Size of the file to be copied.
hgs
parents:
diff changeset
    99
        */
hgs
parents:
diff changeset
   100
        void AllocateFileBlockBufferL( TInt aFileSize );
hgs
parents:
diff changeset
   101
        
hgs
parents:
diff changeset
   102
        /**
hgs
parents:
diff changeset
   103
        * Closes file handles and resets variables.
hgs
parents:
diff changeset
   104
        *
hgs
parents:
diff changeset
   105
        * @param aRemoveTargetFile If ETrue then the target file is removed.
hgs
parents:
diff changeset
   106
        */
hgs
parents:
diff changeset
   107
        void EndCopy( TBool aRemoveTargetFile );
hgs
parents:
diff changeset
   108
                
hgs
parents:
diff changeset
   109
    private:
hgs
parents:
diff changeset
   110
hgs
parents:
diff changeset
   111
        /**
hgs
parents:
diff changeset
   112
        * File server session.
hgs
parents:
diff changeset
   113
        */
hgs
parents:
diff changeset
   114
        RFs& iFs;
hgs
parents:
diff changeset
   115
hgs
parents:
diff changeset
   116
#ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
hgs
parents:
diff changeset
   117
hgs
parents:
diff changeset
   118
        /**
hgs
parents:
diff changeset
   119
        * File in which we are copying from.
hgs
parents:
diff changeset
   120
        */ 
hgs
parents:
diff changeset
   121
        RFile64 iSourceFile;
hgs
parents:
diff changeset
   122
        
hgs
parents:
diff changeset
   123
        /**
hgs
parents:
diff changeset
   124
        * File which is being copied to.
hgs
parents:
diff changeset
   125
        */ 
hgs
parents:
diff changeset
   126
        RFile64 iTargetFile;
hgs
parents:
diff changeset
   127
hgs
parents:
diff changeset
   128
        /**
hgs
parents:
diff changeset
   129
        * How much data is left for copying.
hgs
parents:
diff changeset
   130
        */
hgs
parents:
diff changeset
   131
        TInt64 iDataRemaining;
hgs
parents:
diff changeset
   132
        
hgs
parents:
diff changeset
   133
        /**
hgs
parents:
diff changeset
   134
        * Current read position in source file. 
hgs
parents:
diff changeset
   135
        */
hgs
parents:
diff changeset
   136
        TInt64 iReadPos;                      
hgs
parents:
diff changeset
   137
#else
hgs
parents:
diff changeset
   138
hgs
parents:
diff changeset
   139
        /**
hgs
parents:
diff changeset
   140
        * File in which we are copying from.
hgs
parents:
diff changeset
   141
        */ 
hgs
parents:
diff changeset
   142
        RFile iSourceFile;
hgs
parents:
diff changeset
   143
        
hgs
parents:
diff changeset
   144
        /**
hgs
parents:
diff changeset
   145
        * File which is being copied to.
hgs
parents:
diff changeset
   146
        */ 
hgs
parents:
diff changeset
   147
        RFile iTargetFile;
hgs
parents:
diff changeset
   148
hgs
parents:
diff changeset
   149
        /**
hgs
parents:
diff changeset
   150
        * How much data is left for copying.
hgs
parents:
diff changeset
   151
        */
hgs
parents:
diff changeset
   152
        TInt iDataRemaining;
hgs
parents:
diff changeset
   153
        
hgs
parents:
diff changeset
   154
        /**
hgs
parents:
diff changeset
   155
        * Current read position in source file. 
hgs
parents:
diff changeset
   156
        */
hgs
parents:
diff changeset
   157
        TInt iReadPos;                      
hgs
parents:
diff changeset
   158
hgs
parents:
diff changeset
   159
#endif
hgs
parents:
diff changeset
   160
        /**
hgs
parents:
diff changeset
   161
        * Set to ETrue when copy starts and EFalse when copying ends.
hgs
parents:
diff changeset
   162
        */
hgs
parents:
diff changeset
   163
        TBool iIsCopying;
hgs
parents:
diff changeset
   164
        
hgs
parents:
diff changeset
   165
        /**
hgs
parents:
diff changeset
   166
        * Space for the one file block. Own
hgs
parents:
diff changeset
   167
        */
hgs
parents:
diff changeset
   168
        HBufC8* iFileBlockBuffer;
hgs
parents:
diff changeset
   169
hgs
parents:
diff changeset
   170
#ifdef _DEBUG
hgs
parents:
diff changeset
   171
        /**
hgs
parents:
diff changeset
   172
        * Used to calculate copying speed.
hgs
parents:
diff changeset
   173
        */
hgs
parents:
diff changeset
   174
        TTime iStartTime;
hgs
parents:
diff changeset
   175
#endif        
hgs
parents:
diff changeset
   176
    };
hgs
parents:
diff changeset
   177
hgs
parents:
diff changeset
   178
#endif   // VCXMYVIDEOSASYNCFILECOPY_H
hgs
parents:
diff changeset
   179
hgs
parents:
diff changeset
   180