diff -r 000000000000 -r c53acadfccc6 harvester/monitorplugins/fileplugin/inc/processoriginmapper.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/harvester/monitorplugins/fileplugin/inc/processoriginmapper.h Mon Jan 18 20:34:07 2010 +0200 @@ -0,0 +1,201 @@ +/* +* Copyright (c) 2007-2009 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: Maintains a list of process ids and matching origin* +*/ + + +#ifndef __PROCESSORIGINMAPPER_H__ +#define __PROCESSORIGINMAPPER_H__ + +#include +#include + +#include "mdeconstants.h" +#include "processoriginmapperinterface.h" + +/** + * @var Data transfer object used for process/origin + * mapping table. + */ +struct TProcessOriginPair + { + TUid iProcessId; + TOrigin iOrigin; + }; + +/** + * @var Maximum amount of items allowed in the mapping table. + */ +const TInt KMaxMappingSize = 100; + + +/** + * Maintains a list of process ids and matching origin + * values to be set for mde objects created by a process. + * List is maintained in memory and in a text file. + * + * API is provided to add and remove processes in the list + * and to retrieve the matching origin by a process id (if any). + * Mappings are read written to a file on request. + */ +class CProcessOriginMapper : public CBase, + public MProcessOriginMapperInterface + { + public: + + /** + * Creates and constructs a new instance of CLocationContextPlugin. + * Two-phase construction. + * + * @return A pointer to the created instance. + */ + static CProcessOriginMapper* NewL(); + + /** + * Destructor. + */ + virtual ~CProcessOriginMapper(); + + private: + + /** + * Private constructor, called by NewL() only. + */ + CProcessOriginMapper(); + + /** + * Second phase construction called by NewL(). + */ + void ConstructL(); + + public: + + /** + * Add a process to the list. + * @param aProcessUid Uid of the process to add. + * @param aOrigin Origin to which this process will mapped to. + */ + void RegisterProcessL( const TUid& aProcessId, + const TOrigin& aOrigin ); + + /** + * Remove a process from the list. + * @param aProcessId Uid of the process to remove. + */ + void UnregisterProcessL( const TUid& aProcessId ); + + /** + * Check a process from the list. + * @param aProcessId Uid of the process to check. + * @return Origin the given process is mapped to + * or KErrNotFound if not found. + */ + TOrigin OriginL( const TUid& aProcessId ); + + /** + * Read process id mappings from a file. + * This doesn't clear the list of currently registered mappings. + * @param aFile File name and path. + * @return Count of mapping pairs read. + */ + TInt ReadFileL( const TDesC& aFile ); + + /** + * Read process id mappings from the default file. + * @return Count of mapping pairs read. + */ + TInt ReadFileL(); + + /** + * Write process id mappings to a file. + * @param aFile File name and path. + */ + void WriteFileL( const TDesC& aFile ); + + /** + * Write process id mappings to the default file. + */ + void WriteFileL(); + + /** + * Clear mapping table in memory. + */ + void Clear(); + + /** + * Count of registered mappings. + * @return Count + */ + TInt Count(); + + private: + + /** + * Find an index by process id. + * @param aProcessId Process id. + * @return Index or KErrNotFound if not found. + */ + TInt FindProcess( const TUid& aProcessId ); + + /** + * Read one process id and origin pair from file. + * @param aProcessUid Uid of the process to add. + * @param aOrigin Origin to which this process will mapped to. + */ + void ReadProcessOriginPairL( TUid& aProcessId, TOrigin& aOrigin ); + + /** + * Write one related process/origin pair to a file. + * @param aProcessUid Uid of the process to add. + * @param aOrigin Origin to which this process will mapped to. + */ + void WriteProcessOriginPairL( TUid& aProcessId, TOrigin& aOrigin ); + + private: // data + + /** + * @var Mapping table. It holds pairs of + * matching process ids and origins. + * Content is loaded from and saved to a file. + */ + RArray iProcessOriginMap; + + /** + * File system session. + */ + RFs iFs; + + /** + * File stream used for reading the import file + */ + RFileReadStream iReadStream; + + /** + * File stream used for writing the export file + */ + RFileWriteStream iWriteStream; + + /** + * A buffer used for reading lines from files. + */ + HBufC8* iLineBuffer; + + /** + * Indicates read defult origin map file. + * No write process should occur. + */ + TBool iDefaultFileRead; + }; + +#endif