diff -r 7333d7932ef7 -r 8b7f4e561641 installationservices/swcomponentregistry/inc_private/scrserver.h --- a/installationservices/swcomponentregistry/inc_private/scrserver.h Tue Aug 31 15:21:33 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,129 +0,0 @@ -/* -* Copyright (c) 2008-2010 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: -* Defines server-side classes which are used to implement the SCR server. -* -*/ - - -/** - @file - @internalComponent - @released -*/ - - -#ifndef SCRSERVER_H -#define SCRSERVER_H - -#include -#include "scrcommon.h" -#include "usifcommon.h" - -_LIT_SECURE_ID(KSisRegistryServerSid, 0x10202DCA); -_LIT_SECURE_ID(KApparcServerSid, 0x10003A3F); - -namespace Usif - { - // forward declarations - class CScrServer; - class CScrRequestImpl; - - class CScrSession : public CScsSession - /** - The instance of this class is used to perform SCR client requests and - is created for each client. - */ - { - public: - static CScrSession* NewL(CScrServer &aServer, const RMessage2& aMessage); - ~CScrSession(); - - // implement CScsSession - TBool DoServiceL(TInt aFunction, const RMessage2& aMessage); - // override CScsSession - CScsSubsession* DoCreateSubsessionL(TInt aFunction, const RMessage2& aMessage); - - private: - CScrSession(CScrServer& aServer); - - void ApplySubsessionConstraintL(CScrServer& aServer); - void ApplyTransactionConstraintL(CScrServer& aServer, TBool& aCreateImplicitTransaction); - void MutatingOperationsPreambleL(CScrServer& aServer, TScrSessionFunction aFunction, TBool& aIsTransactionImplicit); - void MutatingOperationsPostambleL(CScrServer& aServer); - - private: - TBool iTransactionOwner; - }; - - class CScrServer : public CScsServer - /** - The CScsServer-derived object which is used to generate SCR sessions for the SCR clients. - */ - { - public: - static CScrServer* NewLC(); - - ~CScrServer(); - - //Implement from CScsServer - CScsSession* DoNewSessionL(const RMessage2& aMessage); - - inline CScrRequestImpl* RequestImpL(); - void ReconnectL(); - - void AddSubsessionOwnerL(CScrSession* aSession); - void RemoveSubsessionOwner(CScrSession* aSession); - TBool IsTheOnlySubsessionOwner(CScrSession* aSession); - TInt SubsessionCount(); - - void SetTransactionOwner(CScrSession* aSession); - TBool IsTransactionInProgress(); - TBool IsTransactionOwner(CScrSession* aSession); - virtual void DoPreHeapMarkOrCheckL(); - virtual void DoPostHeapMarkOrCheckL(); - protected: - CPolicyServer::TCustomResult CustomSecurityCheckL(const RMessage2& aMsg, TInt& aAction, TSecurityInfo& aMissing); - - private: - CScrServer(); - void ConstructL(); - void SetupL(); - CPolicyServer::TCustomResult CheckDeleteComponentAllowedL(const RMessage2& aMsg); - CPolicyServer::TCustomResult CheckComponentIdMatchingEnvironmentL(const RMessage2& aMsg, TBool aCheckForSingleApp=EFalse); - CPolicyServer::TCustomResult CheckSoftwareNameMatchingEnvironmentL(const RMessage2& aMsg); - CPolicyServer::TCustomResult CheckAllowedFilePathL(const RMessage2& aMsg); - CPolicyServer::TCustomResult CheckClientIsInstallerL(const RMessage2& aMsg); - CPolicyServer::TCustomResult CheckCommonComponentPropertySettableL(const RMessage2& aMsg, TCapability aRequiredCapability); - - private: - RFs iFs; ///< File server session handle. - CScrRequestImpl* iRequestImpl; ///< Pointer to the request implementation object. - CScrSession* iTransactionOwningSession; ///< Pointer to the session which is owner of the current transaction. Owned by another object. NULL means there is no transaction in progress. - RPointerArray iSubsessionOwners; ///< The list of sessions which own active subsessions - RFile iDatabaseFile; ///< The database file handle - RFile iJournalFile; ///< The journal file handle - }; - - inline CScrRequestImpl* CScrServer::RequestImpL() - { - if(!iRequestImpl) - { - User::Leave(KErrArgument); - } - return iRequestImpl; - } - - } // End of namespace SCRSERVER_H -#endif