cryptoservices/filebasedcertificateandkeystores/source/certapps/server/CFSCertAppsServer.h
--- /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__