--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/policymanagement/policyengine/centreptoolserver/inc/RepositorySession.h Thu Dec 17 09:07:52 2009 +0200
@@ -0,0 +1,186 @@
+/*
+* Copyright (c) 2000 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: Implementation of policymanagement components
+*
+*/
+
+
+
+#ifndef REPOSITORY_SESSION_HEADER_
+#define REPOSITORY_SESSION_HEADER_
+
+// INCLUDES
+
+#include <e32base.h>
+#include <f32file.h>
+#include <s32file.h>
+#include <s32strm.h>
+
+#include "constants.h"
+#include "IniFileHelper.h"
+
+// CONSTANTS
+// MACROS
+// DATA TYPES
+// FUNCTION PROTOTYPES
+// FORWARD DECLARATIONS
+
+class CRepositorySession;
+
+// CLASS DECLARATION
+
+class CRepositoryContent : public CBase
+{
+ public:
+ //constructors
+ ~CRepositoryContent();
+
+ static CRepositoryContent * NewL( const TUid& aUid);
+ static CRepositoryContent * NewL( const TUid& aUid, HBufC* aContent);
+
+ void ReleaseResources();
+
+ //file streaming
+ void ReadStreamL( RReadStream& aStream, TBool aOnlyHeader );
+ void WriteStreamL( RWriteStream& aStream );
+
+
+ //File reading
+ void ReadHeaderL();
+ void ReadOptionalDataL();
+ void ReadPlatSecL();
+ void ReadMainL();
+
+ //File writing
+ void WriteFileL( RFile& aFile);
+
+ //Search setting
+ CIndividualSetting* FindIndividualSetting( const TUint32 aSettingId);
+ void CreateRangeSettingsL( RPointerArray<CRangeSetting>& aSettings, TUint32 aRangeStart, TUint32 aRangeEnd);
+ void CreateMaskSettingsL( RPointerArray<CRangeSetting>& aSettings, TUint32 aCompareValue, TUint32 aMask);
+ void CreateMaskBackupL( RPointerArray<CRangeMeta>& aSettings, TUint32 aCompareValue, TUint32 aMask);
+ void CreateRangeBackupL( RPointerArray<CRangeMeta>& aSettings, TUint32 aRangeStart, TUint32 aRangeEnd);
+
+ TBool CheckRangeValidity();
+
+ TBool CheckAccess( const RMessage2& aMessage, TUint32 aSettingId, TAccessType aAccessType);
+ private:
+ //private constructors
+ CRepositoryContent( const TUid& aUid);
+ CRepositoryContent( const TUid& aUid, HBufC* aContent);
+ void ConstructL();
+
+ //repository file management
+ void DeleteRepositoryFile();
+ void CREFileCreationOk( TBool aState);
+
+ //setting handling methods
+ CIndividualSetting* FindSettingOrCreateL( const TUint32& aSettingId);
+ void AddIndividualSettingL( CIndividualSetting* aSetting);
+ TInt SingleSecuritySettingsCount();
+ private:
+ CDefaultSetting * iDefaultSetting;
+ TUint32 iDefaultMeta;
+ RPointerArray<CRangeSetting> iRangeSettings;
+ RPointerArray<CRangeMeta> iRangeMetas;
+ RPointerArray<CIndividualSetting> iIndividualSettings;
+
+ TPtrC iContentPtr;
+ TPtrC iHeaderPtr;
+ TPtrC iOwnerPtr;
+ TPtrC iDefaultMetaPtr;
+
+ HBufC* iContent;
+
+ //repository info
+ TUid iUid;
+ TUid iOwner;
+ TTime iTimeStamp ;
+
+ TInt iSingleSecuritySettingCount;
+
+ friend class CRepositorySession;
+};
+
+class CRepositorySession : public CObject
+{
+ public:
+
+ CRepositorySession( TUid aRepositoryId);
+ ~CRepositorySession();
+
+ static CRepositorySession * NewL( TUid aRepositoryId);
+
+ //repository management
+ void InitRepositorySessionL();
+ void CommitRepositoryL();
+
+ void SetSecurityIdForSettingL( const RMessage2& aMessage);
+ void SetSecurityIdForRangeL( const RMessage2& aMessage);
+ void SetSecurityIdForMaskL( const RMessage2& aMessage);
+
+ void RestoreSettingL( const RMessage2& aMessage);
+ void RestoreRangeL( const RMessage2& aMessage);
+
+ void AddSidForDefaultsL( const RMessage2& aMessage);
+ void RestoreDefaultsL( const RMessage2& aMessage);
+ void RestoreMaskL( const RMessage2& aMessage);
+
+ void RemoveBackupForMaskL( const RMessage2& aMessage);
+ void RestoreMaskBackupL( const RMessage2& aMessage);
+ void RemoveBackupForRangeL( const RMessage2& aMessage);
+ void RestoreRangeBackupL( const RMessage2& aMessage);
+ void RemoveDefaultBackup();
+ void RestoreDefaultBackupL();
+
+ void CheckAccessL( const RMessage2& aMessage);
+
+ //Commit functions
+ static void CheckCommitStateL();
+ private:
+ //File reading
+ void ReadFileL();
+
+ //Utility
+ void ReleaseResources();
+ void CheckRepositoryState( TInt& aFileOpenResult);
+
+
+ TInt ReadRAML( TBool aOnlyHeader);
+ void CreateAndReadROML();
+ CRepositoryContent* ReadROMFileL( TBool aReadSettings);
+
+ //Backup handling
+ void MakeBackupL( RFile& aFile);
+ static void RestoreBackupL();
+ static void RemoveBackupL();
+ static TInt CreatePath();
+
+ private:
+ //repository specific data
+ TUid iRepositoryId;
+ RFs iFs;
+ RFile iFile;
+ TBool iStreamed; //if file repository is opened as a streamed this flag is set TRUE (*.CRE files are streamed)
+ TBool iRepositoryInUse;
+
+
+ //file is restored if commit is not called before close!!
+ TBuf<IniConstants::KUidLengthRep> iRepName;
+
+ CRepositoryContent* iRepContent;
+};
+
+
+#endif
\ No newline at end of file