--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/policymanagement/policyengine/policyengineserver/inc/PolicyEngineServer.h Thu Dec 17 09:07:52 2009 +0200
@@ -0,0 +1,237 @@
+/*
+* 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 __POLICY_ENGINE_SERVER_H__
+#define __POLICY_ENGINE_SERVER_H__
+
+// INCLUDES
+
+#include <e32base.h>
+#include "PolicyEngineClient.h"
+#include "PlatformSecurityPolicies.h"
+
+// CONSTANTS
+
+// ----------------------------------------------------------------------------------------
+// PolicyEngine server panic codes
+// ----------------------------------------------------------------------------------------
+
+enum TPolicyEnginePanic
+ {
+ EPanicGeneral,
+ EBadSubsessionHandle,
+ EPanicIllegalFunction,
+ EBadDescriptor
+ };
+
+const TInt KPolicyEngineSelfCheckDelay = 8000000; // approx 8s
+const TInt KPolicyEngineShutdownDelay = 5; // approx 8s * 2 = 40s
+const TInt KPolicyEngineReleaseElementsDelay = 1; // approx 8s * 1 = 8s
+
+
+// DATA TYPES
+// FUNCTION PROTOTYPES
+
+void PanicClient(const RMessagePtr2& aMessage,TPolicyEnginePanic aPanic);
+
+// FORWARD DECLARATIONS
+
+class CPolicyStorage;
+class CPolicyProcessor;
+class CPolicyManager;
+class CTrustedSession;
+class CCertificateMaps;
+
+#ifdef _DEBUG
+namespace DebugUtility
+{
+ TBool PolicyCheckActive();
+}
+#endif
+
+
+// MACROS
+
+#ifdef _DEBUG
+ #define NO_POLICY_CHECK_RETURN if(!DebugUtility::PolicyCheckActive())return;
+ #define NO_POLICY_CHECK_FALSE DebugUtility::PolicyCheckActive()
+#else
+ #define NO_POLICY_CHECK_RETURN ;
+ #define NO_POLICY_CHECK_FALSE ETrue
+#endif
+
+// CLASS DECLARATION
+
+class CShutdown : public CTimer
+{
+ //shutdown timer for policy server
+ public:
+ public:
+ inline CShutdown();
+ inline void ConstructL();
+ inline void Start();
+ private:
+ void RunL();
+ TInt iSelfCheckCounter;
+};
+
+class CServerStatusFlags : public CBase
+{
+ public:
+ CServerStatusFlags() {}
+ public:
+ TBool iManagementUiActive;
+ TBool iUiActive;
+ TBool iProcessorActive;
+ TBool iManagementActive;
+ private:
+};
+
+class CSubSessionObjects : public CObject
+{
+ public:
+ static CSubSessionObjects * NewL( CPolicyProcessor * aPolicyProcessor,
+ CPolicyManager * aPolicyManager,
+ CTrustedSession * aTrustedSession);
+ ~CSubSessionObjects();
+ private:
+ CSubSessionObjects( CPolicyProcessor * aPolicyProcessor,
+ CPolicyManager * aPolicyManager,
+ CTrustedSession * aTrustedSession);
+ private:
+ CPolicyProcessor * iPolicyProcessor;
+ CPolicyManager * iPolicyManager;
+ CTrustedSession * iTrustedSession;
+
+
+ friend class CPolicyEngineSession;
+ friend class CPolicyEngineServer;
+};
+
+/**
+* CPolicyEngineServer
+* Description.
+*/
+
+class CPolicyEngineServer : public CPolicyServer
+{
+ public:
+ static CServer2* NewLC();
+ ~CPolicyEngineServer();
+ void AddSession();
+ void DropSession();
+
+ /**
+ * Description
+ * @param a???
+ * @return CObjectCon
+ */
+
+ CObjectCon* NewContainerL();
+
+ static CCertificateMaps * CertificateMaps();
+ static CServerStatusFlags* StatusFlags();
+ static void AddActiveObjectL( CActive* aActiveObject);
+ static void RemoveActiveObject( CActive* aActiveObject);
+ static void StopAllPendingRequests();
+
+ //get active subsessions object to PolicyEngineServer
+ static void SetActiveSubSession( const CBase* iBase);
+ void Panic( TInt aPanicCode);
+private:
+ CPolicyEngineServer();
+ void ConstructL();
+ CSession2* NewSessionL(const TVersion& aVersion, const RMessage2& aMessage) const;
+
+ //From CPolicyServer
+ CPolicyServer::TCustomResult CustomSecurityCheckL(const RMessage2& aMsg, TInt& aAction, TSecurityInfo& aMissing);
+
+
+private:
+ TInt iSessionCount;
+ CShutdown iShutdown;
+ RArray<CActive*> iActiveObjectCancelList;
+ CPolicyStorage* iPolicyStorage;
+ CCertificateMaps* iCertificateMaps;
+ CSubSessionObjects* iSubSessionObjects;
+ CServerStatusFlags* iFlags;
+ CObjectConIx *iContainerIndex;
+
+ static CPolicyEngineServer* iServer;
+ CPolicyServer::TPolicy iPolicyEngineSecurityPolicy;
+
+ friend class CPolicyEngineSession;
+};
+
+class CPolicyEngineSession : public CSession2
+{
+
+ public:
+ CPolicyEngineSession();
+ void CreateL();
+ void SetStatusFlags( CServerStatusFlags* aFlags);
+
+ CSubSessionObjects* GetSubSessionObjects( const CBase* iBase);
+ private:
+
+ private:
+ ~CPolicyEngineSession();
+ inline CPolicyEngineServer& Server();
+
+ void ServiceL(const RMessage2& aMessage);
+
+ void DispatchMessageL(const RMessage2& aMessage);
+ void ServiceError(const RMessage2& aMessage,TInt aError);
+
+ void NewSubSessionL( const RMessage2& aMessage);
+ CSubSessionObjects* SubSessionFromHandle( const RMessage2& aMessage);
+ void DeleteSubSession( const RMessage2& aMessage);
+
+ void ExecuteRequestL( const RMessage2& aMessage);
+ void AddCertificateForSessionL( const RMessage2& aMessage);
+
+ void PerformRFSL();
+ private:
+ TInt iSubsessionCount;
+
+ CObjectCon *iContainer; // object container for this session
+ CObjectIx* iSessionsObjects; // object index which stores objects for this session
+};
+
+class CASyncHandler : public CActive
+{
+ public:
+ ~CASyncHandler();
+ static CASyncHandler* NewLC();
+
+ TRequestStatus& GetRequestStatus();
+ void WaitForRequest();
+ protected:
+ CASyncHandler();
+ void RunL();
+ void DoCancel();
+ private:
+ CActiveSchedulerWait iWaitScheduler;
+};
+
+#endif //__POLICYENGINESERVER_H__
+
+
+
+
+