engine/src/ConnectionEngine.cpp
branchRCL_3
changeset 285 4d42a5e09930
parent 163 f94dbd678dda
child 310 2e0299e13cbf
--- a/engine/src/ConnectionEngine.cpp	Sat Oct 23 18:27:45 2010 +0100
+++ b/engine/src/ConnectionEngine.cpp	Sun Oct 24 01:27:31 2010 +0100
@@ -55,16 +55,21 @@
 	}
 
 void CConnectionEngine::RunL()
-	{		
-	if ( iStatus.Int() == KErrNone )
-		{		
-		delete iMobility;
-		iMobility = NULL;
-		iMobility = CActiveCommsMobilityApiExt::NewL( iConnection, *this );
+	{
+	DP1("CConnectionEngine::RunL BEGIN, iStatus.Int()=%d", iStatus.Int());
+	if ( iStatus.Int() == KErrNone && iMobility == NULL)
+		{
+		TRAPD(err, iMobility = CActiveCommsMobilityApiExt::NewL( iConnection, *this ));
+		
+		if (err != KErrNone)
+			{
+			DP1("Leave in CActiveCommsMobilityApiExt::NewL, err=%d", err);
+			}
 		}
 	
 	iConnectionState = iStatus.Int() == KErrNone?CConnectionEngine::EConnected:CConnectionEngine::ENotConnected;
 	ReportConnectionL( iStatus.Int() );
+	DP("CConnectionEngine::RunL END");
 	}
 
 void CConnectionEngine::DoCancel()
@@ -80,7 +85,8 @@
 		TAccessPointInfo /*aNewAPInfo*/,
 		TBool aIsUpgrade,
 		TBool aIsSeamless )
-	{   
+	{
+	DP("CConnectionEngine::PreferredCarrierAvailable");
 	if ( aIsUpgrade )
 		{        
 		}
@@ -103,6 +109,7 @@
 
 void CConnectionEngine::NewCarrierActive( TAccessPointInfo /*aNewAPInfo*/, TBool aIsSeamless )
 	{    
+	DP("CConnectionEngine::NewCarrierActive");
 	if ( aIsSeamless )
 		{
 		// in S60 3.2, this situation cannot occur.
@@ -124,6 +131,7 @@
 
 TBool CConnectionEngine::ConnectionSettingL()
 	{
+	DP("CConnectionEngine::ConnectionSettingL");
 	TBool selected( EFalse );
 
 	CCmApplicationSettingsUi* settings = CCmApplicationSettingsUi::NewL();
@@ -147,7 +155,7 @@
 
 void CConnectionEngine::StartL(TConnectionType aConnectionType)
 	{
-	DP1("CConnectionEngine::StartL, aConnectionType=%d", aConnectionType);
+	DP1("CConnectionEngine::StartL BEGIN, aConnectionType=%d", aConnectionType);
 	
 	iConnection.Close();
 	User::LeaveIfError( iConnection.Open( iSocketServer ) );
@@ -206,6 +214,7 @@
 	
 	iConnectionType = aConnectionType;
 	iConnectionState = CConnectionEngine::EConnecting;
+	DP1("CConnectionEngine::StartL END, iConnectionState=%d", iConnectionState);	
 	}
 
 void CConnectionEngine::Stop()
@@ -223,6 +232,7 @@
 
 CConnectionEngine::TConnectionState CConnectionEngine::ConnectionState()
 	{
+	DP("CConnectionEngine::ConnectionState BEGIN");
 	TInt selectedConn = (TInt) iSnapPreference.Snap();
 	TInt specIAPSNAP = iPodcastModel.SettingsEngine().SpecificIAP();
 	// If we have IAP preference then get that from our current connection and mask out the selected iap
@@ -266,14 +276,29 @@
 			}
 		}
 	
+	DP("CConnectionEngine::ConnectionState END");
 	return iConnectionState;
 	}
 
 EXPORT_C void CConnectionEngine::AddObserver(MConnectionObserver* aObserver)
 	{
+	DP("CConnectionEngine::AddObserver");
 	iObserverArray.Append(aObserver);
 	}
 
+EXPORT_C void CConnectionEngine::RemoveObserver(MConnectionObserver* aObserver)
+	{
+	DP("CConnectionEngine::RemoveObserver");
+	for (int i=0;i<iObserverArray.Count();i++)
+		{
+		if (iObserverArray[i] == aObserver)
+			{
+			iObserverArray.Remove(i);
+			}
+			
+		}
+	}
+
 RSocketServ& CConnectionEngine::SockServ()
 	{
 	return iSocketServer;
@@ -282,10 +307,13 @@
 
 void CConnectionEngine::ReportConnectionL(TInt aError)
 	{
+	DP1("CConnectionEngine::ReportConnectionL, aError=%d", aError);
 	TInt noObservers = iObserverArray.Count();
+	DP1("    noObservers=%d", noObservers);
 	while(noObservers)
 		{
 		noObservers--;
+		DP("    calling callback");
 		iObserverArray[noObservers]->ConnectCompleteL(aError);
 		}
 	}