diff -r 491b3ed49290 -r 65326cf895ed filesystemuis/memscaneng/serverinc/msengscannerbase.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/filesystemuis/memscaneng/serverinc/msengscannerbase.h Wed Sep 01 12:31:07 2010 +0100 @@ -0,0 +1,159 @@ +/* +* Copyright (c) 2006 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: +* Base class for scanner classes. +* +* +*/ + + +#ifndef MSENGSCANNERBASE_H +#define MSENGSCANNERBASE_H + + + + +// USER INCLUDES +#include "mseng.hrh" +#include "msenginfoarray.h" +#include "msengscanobserver.h" + + + +// CONSTANTS +const TInt KDirectoryListGranularity = 10; + +// CLASS DECLARATION + +/** +* Base class for scanner classes. +* +*/ +class CMsengScannerBase : public CActive + { + public: // Constructors and destructor + + /** + * + */ + enum TStepResult + { + ECompleteRequest = 0, + ERequestIssuedInternally, + EScanComplete + }; + + /** + * C++ default constructor. + */ + CMsengScannerBase(MMsengScannerObserver& aObserver, + CMsengInfoArray& aInfoArray, RFs& aFsSession); + + /** + * Destructor. + */ + virtual ~CMsengScannerBase(); + + protected: // Internal functions + + /** + * Do one incremental scanning step + */ + virtual TStepResult PerformStepL() = 0; + + /** + * Complete this active object's request and set it active again + */ + void CompleteRequest(TInt aCode = KErrNone); + + /** + * Add new value in bytes to the amount of data found with this UID. + * @param aUid The UID type. + * @param aSize The size of the file with this UID. + */ + inline void AddSizeByUidL(TUidTypes aUid, TInt64 aSize); + + /** + * Add new value in bytes to the amount of data found with this UID. + * @param aUid The UID type. + * @param aSize The size of the file with this UID. + */ + inline void AddSizeByExtL(TExtTypes aExt, TInt64 aSize); + + /** + * Query if the directory is in the list of directories to be + * excluded from scanning, or is a subdirectory of one. + * @param aDirectory Path of the directory + */ + inline TBool IsExcludedDir(const TDesC& aDirectory); + + /** + * Query if the directory is in the list of directories to be + * excluded from scanning, or is a subdirectory of one. + * @param aDirectory Path of the directory + */ + inline TBool IsSpecialDir(const TDesC& aDirectory); + + /** + * Access the file server session + */ + inline RFs& FsSession(); + + /** + * Access the information array + */ + inline CMsengInfoArray& InfoArray(); + + /** + * Access the observer of this scanner + */ + inline MMsengScannerObserver& ScannerObserver(); + + private: // from CActive + + /** + * + */ + virtual void RunL(); + + /** + * + */ + virtual void DoCancel(); + + /** + * + */ + virtual TInt RunError(TInt aError); + + private: + + // Prohibit copy constructor if not deriving from CBase. + CMsengScannerBase( const CMsengScannerBase& ); + // Prohibit assigment operator if not deriving from CBase. + CMsengScannerBase& operator= ( const CMsengScannerBase& ); + + + private: + + MMsengScannerObserver& iObserver; + CMsengInfoArray& iInfoArray; + RFs& iFsSession; + }; + +#include "msengscannerbase.inl" + +#endif // CMSENGSCANNERBASE_H + +// End of File