sysstatemgmt/systemstatemgr/sus/src/susadaptionserver.cpp
changeset 12 e978f818f9bd
parent 0 4e1aa6a622a0
--- a/sysstatemgmt/systemstatemgr/sus/src/susadaptionserver.cpp	Tue Feb 02 00:53:00 2010 +0200
+++ b/sysstatemgmt/systemstatemgr/sus/src/susadaptionserver.cpp	Fri Mar 19 09:58:42 2010 +0200
@@ -1,4 +1,4 @@
-// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 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"
@@ -59,8 +59,8 @@
 	};
 
 //ESetAsPriorityClient request is allowed only for priotity clients(Telephony). Inorder to prevent the access
-//client request will be policed using C32 SID
-#define KC32SecureId 0x10003D33
+//client request will be policed using C32exe.exe SID
+#define KC32SecureId 0x101F7989
 
 /**
  Array containing the different security checks performed by this server 
@@ -168,8 +168,7 @@
 	}
  
  
-CSsmAdaptationServer::CSsmAdaptationServer( ): CPolicyServer(EPriorityStandard, KSusAdaptionServerPolicy)
-,iPriorityClientSession(NULL)
+CSsmAdaptationServer::CSsmAdaptationServer(): CPolicyServer(EPriorityStandard, KSusAdaptionServerPolicy)
 	{
 	}
 
@@ -207,15 +206,26 @@
  */
 CSsmAdaptationServer* CSsmAdaptationServer::NewLC( )
 	{
-	CSsmAdaptationServer* server = new(ELeave) CSsmAdaptationServer();
-	CleanupStack::PushL (server );
-	server->ConstructL ( );
-	return server;
+	return CSsmAdaptationServer::NewLC(KSusAdaptionServerName);
 	}
 
 /**
+ * Overloaded NewLC, which starts the server with the provided name.
+ @param aServerName - Name of the Server.
  */
-void CSsmAdaptationServer::ConstructL( )
+CSsmAdaptationServer* CSsmAdaptationServer::NewLC(const TDesC& aServerName)
+    {
+    CSsmAdaptationServer* server = new(ELeave) CSsmAdaptationServer();
+    CleanupStack::PushL(server);
+    server->ConstructL(aServerName);
+    return server;
+    }
+
+
+/**
+ * ConstructL()
+ */
+void CSsmAdaptationServer::ConstructL(const TDesC& aServerName)
 	{
 
 	__ASSERT_ALWAYS( KErrNone == User::SetCritical(User::ESystemCritical),
@@ -225,7 +235,7 @@
 			User::Panic(KPanicSsmSus, EAdaptionServerError2));
 
 	iSusAdaptationPluginLoader = CSusAdaptationPluginLoader::NewL();
-	TInt err = Start(KSusAdaptionServerName);
+	TInt err = Start(aServerName);
 #ifdef  TESTSUSADAPTATIONPLUGINLOAD_OOM
 	if (err != KErrNone && err != KErrAlreadyExists)
 		{
@@ -501,12 +511,8 @@
         {
         LoadEmergencyCallRfAdaptationL();    
         }
-
 	iEmergencyCallRfAdaptation->DoEmergencyCallRfAdaptationCancelL(aMessage);
 	}
-
-
-	
 	
 void CSsmAdaptationServer::LoadStateAdaptationL()
 	{
@@ -564,11 +570,9 @@
 	{
 	MEmergencyCallRfAdaptation *emergencyCallRfAdaptationPlugin = iSusAdaptationPluginLoader->CreateEmergencyCallRfAdaptationL();
     CleanupReleasePushL(*emergencyCallRfAdaptationPlugin);
-    //From here emergencyCallRfAdaptationPlugin object will be owned by iEmergencyCallRfAdaptation
-    iEmergencyCallRfAdaptation = CEmergencyCallRfAdaptation::NewL(*emergencyCallRfAdaptationPlugin);    
+	//From here emergencyCallRfAdaptationPlugin object will be owned by iEmergencyCallRfAdaptation
+    iEmergencyCallRfAdaptation = CEmergencyCallRfAdaptation::NewL(emergencyCallRfAdaptationPlugin);    
     CleanupStack::Pop(emergencyCallRfAdaptationPlugin);
-    //Reserve memory for performing Emergency call during OOM condition
-    iEmergencyCallRfAdaptation->ReserveMemoryL();    
 	}
 
 #ifdef _DEBUG
@@ -656,15 +660,21 @@
 	}
 
 CAdaptationMessage::CAdaptationMessage(const RMessage2 &aMessage): CBase(),iMessage(aMessage)
-,iMessageAvailable(ETrue),iUsingReservedHeap(EFalse)
 	{
 	}
  
 void CAdaptationMessage::Complete(TInt aReason)
 	{
-	iMessage.Complete(aReason);  	
+    if (!(iMessage.IsNull()))
+        {
+        iMessage.Complete(aReason);  	
+        }
 	}
 
+void CAdaptationMessage::SetMessage(const RMessage2& aMessage)
+    {
+    iMessage = const_cast<RMessage2&> (aMessage);
+    }
 
 void RSsmAdaptationRequestQueue::NotifyAndRemoveAll()
 	{
@@ -679,26 +689,6 @@
 	iQueue.Reset();		
 	}
 
-void RSsmAdaptationRequestQueue::NotifyAndRemoveAll(RHeap *aReservedHeap)
-    {
-    TInt index,count = iQueue.Count();
-    
-    for(index =0;index < count ;index++)
-        {
-        iQueue[index]->Complete(KErrServerTerminated);
-        if(iQueue[index]->iUsingReservedHeap)
-            {
-            aReservedHeap->Free(iQueue[index]);
-            }
-        else
-            {
-            delete iQueue[index];
-            }
-        iQueue[index] = NULL;
-        }
-    iQueue.Reset();     
-    }
-
 void RSsmAdaptationRequestQueue::Close()
 	{
 	iQueue.Close();
@@ -736,33 +726,6 @@
 	
 	}
 
-void RSsmAdaptationRequestQueue::RemoveFromQueueAndComplete(const RMessage2 &aMessage, RHeap *aReservedHeap )
-    {
-
-    CAdaptationMessage *messageToBeDeleted;
-    
-    // iQueue.Count() is recalculated each time as the object is removed from the 
-    // array(which reduces the number of object pointers in the array
-    for(TInt index = 0; index < iQueue.Count(); ++index )
-        {
-        if(aMessage.Session() == iQueue[index]->Session())
-            {
-            messageToBeDeleted = iQueue[index];
-            DEBUGPRINT2A("RSsmAdaptationRequestQueue(aMessage,ReservedHeap)called to cancel the request with function id: %d", messageToBeDeleted->Function());
-            iQueue.Remove(index);
-            messageToBeDeleted->Complete(KErrCancel);
-            if(messageToBeDeleted->iUsingReservedHeap)
-                {
-                aReservedHeap->Free(messageToBeDeleted);
-                }
-            else
-                {
-                delete messageToBeDeleted;
-                }
-            --index;
-            }
-        }
-    }
 void RSsmAdaptationRequestQueue::Dequeue(CAdaptationMessage *&aCurrentMessage)
 	{
 	aCurrentMessage = iQueue[0];
@@ -773,11 +736,6 @@
 	return iQueue.Append(aPendingRequest);
 	} 
 
-TInt RSsmAdaptationRequestQueue::Reserve(TInt aReserverCount)
-    {
-    return(iQueue.Reserve(aReserverCount));
-    }
-
 /**
  * Method to get number of object pointers in the Queue
  */