videoscheduler/SchedulerServer/src/CCseSchedulerServerEngine.cpp
branchRCL_3
changeset 20 e53284de66c2
parent 0 822a42b6c3f1
--- a/videoscheduler/SchedulerServer/src/CCseSchedulerServerEngine.cpp	Mon Jun 21 16:49:37 2010 +0300
+++ b/videoscheduler/SchedulerServer/src/CCseSchedulerServerEngine.cpp	Thu Jul 15 19:48:39 2010 +0300
@@ -56,6 +56,16 @@
 // None.
 
 // ============================ MEMBER FUNCTIONS ===============================
+// -----------------------------------------------------------------------------
+// CloseEngine
+// CB method used if ConstructL leaves. Just calls Close to initiate proper
+// shutdown sequence
+// -----------------------------------------------------------------------------
+//
+void CloseEngine( TAny* aPtr )
+    {
+    static_cast<CCseSchedulerServerEngine*>( aPtr )->Close();
+    }
 
 // -----------------------------------------------------------------------------
 // CCseSchedulerServerEngine::CCseSchedulerServerEngine
@@ -79,10 +89,10 @@
     {
     CSELOGSTRING_HIGH_LEVEL(">>>CCseSchedulerServerEngine::NewL");
     
-    CCseSchedulerServerEngine* self = new( ELeave ) CCseSchedulerServerEngine( aServer );
-    CleanupStack::PushL( self );
+    CCseSchedulerServerEngine* self = new( ELeave ) CCseSchedulerServerEngine( aServer );    
+    CleanupStack::PushL( TCleanupItem( CloseEngine, self ) );
     self->ConstructL();
-    CleanupStack::Pop( self );
+    CleanupStack::Pop( ); // CleanupItem
     
     CSELOGSTRING_HIGH_LEVEL("<<<CCseSchedulerServerEngine::NewL");
     return self;
@@ -95,11 +105,11 @@
 //
 void CCseSchedulerServerEngine::ConstructL()
     {
-    CSELOGSTRING_HIGH_LEVEL(">>>CCseSchedulerServerEngine::ConstructL");
-        
+    CSELOGSTRING_HIGH_LEVEL(">>>CCseSchedulerServerEngine::ConstructL");       
+
     iDb = CCseScheduleDB::NewL();
     iCompletitionBreaker = CIdle::NewL( CActive::EPriorityLow );
-    
+
 	CSELOGSTRING_HIGH_LEVEL("<<<CCseSchedulerServerEngine::ConstructL");
     }
 
@@ -111,17 +121,16 @@
 CCseSchedulerServerEngine::~CCseSchedulerServerEngine()
     {
     CSELOGSTRING_HIGH_LEVEL(">>>CCseSchedulerServerEngine::~CCseSchedulerServerEngine");
-    
+
     delete iDb;
     	
 	iPluginControllerArray.ResetAndDestroy();
 	iPluginControllerArray.Close();
-    delete iCompletitionBreaker;    
-		
+    delete iCompletitionBreaker;
+    
     CSELOGSTRING_HIGH_LEVEL("<<<CCseSchedulerServerEngine::~CCseSchedulerServerEngine");
     }
 
-
 // -----------------------------------------------------------------------------
 // CCseSchedulerServerEngine::GeneralServiceL
 //
@@ -864,14 +873,14 @@
 //
 void CCseSchedulerServerEngine::Close()
 	{
-	CSELOGSTRING_HIGH_LEVEL(">>>CCseSchedulerServerEngine::IsSchedulerActive");
+	CSELOGSTRING_HIGH_LEVEL(">>>CCseSchedulerServerEngine::Close");
 	
     while( AccessCount() >= 1 )
         {
         Dec();
         }
 	
-	CSELOGSTRING_HIGH_LEVEL("<<<CCseSchedulerServerEngine::IsSchedulerActive");
+	CSELOGSTRING_HIGH_LEVEL("<<<CCseSchedulerServerEngine::Close");
 	}