cryptoservices/filebasedcertificateandkeystores/source/certapps/server/CFSCertAppsServer.h
changeset 0 2c201484c85f
child 8 35751d3474b7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoservices/filebasedcertificateandkeystores/source/certapps/server/CFSCertAppsServer.h	Wed Jul 08 11:25:26 2009 +0100
@@ -0,0 +1,101 @@
+/*
+* Copyright (c) 2002-2009 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: 
+* CFSCertAppsServer class implementation
+*
+*/
+
+
+
+
+/**
+ @file 
+ @internalTechnology
+*/
+ 
+#ifndef __CFSCERTAPPSSERVER_H__
+#define __CFSCERTAPPSSERVER_H__
+
+#include <e32base.h>
+#include <f32file.h>
+#include <s32file.h>
+#include <mctcertapps.h>
+
+class CFSCertAppsToken;
+class CCertAppsSession;
+class CCertAppsConduit;
+
+class CFSCertAppsServer : public CBase
+	{
+public:
+	static CFSCertAppsServer* NewL();
+	virtual ~CFSCertAppsServer();
+	CCertAppsSession* CreateSessionL();
+
+public: 
+	void AddL(const TCertificateAppInfo& aClient);
+	void RemoveL(const TUid& aUid);
+	TInt ApplicationCountL() const;
+	void ApplicationsL(RArray<TCertificateAppInfo>& aAppArray) const;
+	void ApplicationL(const TUid& aUid, TCertificateAppInfo& aInfo) const;
+
+private:
+	CFSCertAppsServer();
+	void ConstructL();
+
+	/// Finds an application and returns NULL if not found - if aIndex is not
+	/// null then index is copied there
+	const TCertificateAppInfo* FindApplication(const TUid& aUid, TInt* aIndex = NULL) const;
+
+	/// Configures the object from the file store. Will create a new store
+	/// if one does not exist
+	void OpenStoreL();
+	/// Opens a Composite store present under ROM drive.
+	void OpenCompositeStoreL(const TDesC& aFilename);
+	/// Attempt to load the cert apps from the given file
+	void ReadStoreContentsL(const TDesC& aFilename);
+	/// Create a new empty store
+	void CreateStoreL(const TDesC& aFilename);
+	/// aggregate the store files
+	void AggregateStoreFileL(const TDesC& aFile);
+	/// aggregate certificate client entries.
+	void MergeCertificateEntryListL(const RArray<TCertificateAppInfo>& aSourceList);	
+	/// finds if an uid exists in the entry list 
+	TBool FindUid(const TUid& aUid);
+	// TCleanup items used when creating a store or replacing a stream
+	static void DeleteStoreFile(TAny* aThis);
+	static void RevertStore(TAny* aStore);
+
+	/// Replaces the store - called by both Add and Remove.
+	/// Leaves if failed. ExcludedIndex is the index into the 
+	/// array to be excluded. -1 if none are excluded
+	void ReplaceAndCommitL(TInt aExcludedIndex = -1);
+
+	/// Externalizes the array into a stream - commits it if successful
+	void WriteClientArrayL(RWriteStream& stream, TInt aExcludedIndex = -1) const;
+
+private:
+	/// The conduit object used for marshalling/unmarshalling client communications
+	CCertAppsConduit* iConduit;
+	RFs iFs;
+	/// The store where the client are stored
+	CPermanentFileStore* iStore;
+	TStreamId iId;	
+	/// A cache of the contents of the store
+	RArray<TCertificateAppInfo> iClients;
+	/// Used to distinguish variant specific feature from the default. 
+	TUint8 iPatchableConst;
+	};
+
+#endif	//	__CFSCERTAPPSSERVER_H__