webservices/wsconnection/src/senserviceconnectionimpl.cpp
branchRCL_3
changeset 14 ab1e518f96da
parent 11 6abf3d6055cd
child 19 9e96e2676219
equal deleted inserted replaced
13:bf3935de63a1 14:ab1e518f96da
   190     return pNew;
   190     return pNew;
   191     }
   191     }
   192 
   192 
   193 void CSenServiceConnectionImpl::ConstructL(MSenServiceDescription& aSD)
   193 void CSenServiceConnectionImpl::ConstructL(MSenServiceDescription& aSD)
   194     {
   194     {
   195 
   195 	TLSLOG_L(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel ,"CSenServiceConnectionImpl::ConstructL(aSD)");
   196     CSenElement& sdAsElement = ((CSenXmlServiceDescription&)aSD).AsElement();
   196     CSenElement& sdAsElement = ((CSenXmlServiceDescription&)aSD).AsElement();
   197 
   197 
   198     // Check if this is an internal service connection:
   198     // Check if this is an internal service connection:
   199     const TDesC8* pInternal = sdAsElement.AttrValue( KSenAttrInternalSC );
   199     const TDesC8* pInternal = sdAsElement.AttrValue( KSenAttrInternalSC );
   200     if( pInternal )
   200     if( pInternal )
   245 #endif //_SENDEBUG           
   245 #endif //_SENDEBUG           
   246 */
   246 */
   247 #ifndef RD_SEN_SC_PROXY_ENABLED_BY_DEFAULT
   247 #ifndef RD_SEN_SC_PROXY_ENABLED_BY_DEFAULT
   248     ConnectL(); 
   248     ConnectL(); 
   249 // #else // ConnectL occurs on  "proxy" / factory  -level
   249 // #else // ConnectL occurs on  "proxy" / factory  -level
   250 #endif    
   250 #endif
       
   251 	TLSLOG_L(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel ,"CSenServiceConnectionImpl::ConstructL(aSD) Completed");
   251     }
   252     }
   252 
   253 
   253 
   254 
   254 void CSenServiceConnectionImpl::ConnectL()
   255 void CSenServiceConnectionImpl::ConnectL()
   255     {
   256     {
   341         }
   342         }
   342     }
   343     }
   343 
   344 
   344 void CSenServiceConnectionImpl::SetConsumer( MSenServiceConsumer& aConsumer, MSenExtendedConsumerInterface* apExtConsumer )
   345 void CSenServiceConnectionImpl::SetConsumer( MSenServiceConsumer& aConsumer, MSenExtendedConsumerInterface* apExtConsumer )
   345     {
   346     {
       
   347     TLSLOG_L(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel ,"CSenServiceConnectionImpl::SetConsumer");
   346     iObserver = &aConsumer;
   348     iObserver = &aConsumer;
   347     ipExtendedConsumerInterface = apExtConsumer;
   349     ipExtendedConsumerInterface = apExtConsumer;
   348     }
   350     }
   349    
   351    
   350 void CSenServiceConnectionImpl::Consumer( MSenServiceConsumer*& aConsumer, MSenExtendedConsumerInterface*& apExtConsumer )
   352 void CSenServiceConnectionImpl::Consumer( MSenServiceConsumer*& aConsumer, MSenExtendedConsumerInterface*& apExtConsumer )
   351     {
   353     {
       
   354     TLSLOG_L(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel ,"CSenServiceConnectionImpl::Consumer");
   352     aConsumer = iObserver;
   355     aConsumer = iObserver;
   353     apExtConsumer = ipExtendedConsumerInterface;
   356     apExtConsumer = ipExtendedConsumerInterface;
   354     }   
   357     }   
   355 
   358 
   356 TPtrC8 CSenServiceConnectionImpl::InitDescription()
   359 TPtrC8 CSenServiceConnectionImpl::InitDescription()
   449 
   452 
   450     if(iChunkMap)
   453     if(iChunkMap)
   451         {
   454         {
   452         iChunkMap->Reset();
   455         iChunkMap->Reset();
   453         delete iChunkMap;
   456         delete iChunkMap;
       
   457         iChunkMap = NULL;
   454         }
   458         }
   455 
   459 
   456     delete iInBuf;
   460     delete iInBuf;
   457     delete iOutBuf;
   461     delete iOutBuf;
   458     delete iFragment;
   462     delete iFragment;
   476     }
   480     }
   477 
   481 
   478 
   482 
   479 TPtrC CSenServiceConnectionImpl::SessionID()
   483 TPtrC CSenServiceConnectionImpl::SessionID()
   480     {
   484     {
       
   485     TLSLOG(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel,(_L("CSenServiceConnectionImpl::SessionID()")));
   481     if(ipSessionId)
   486     if(ipSessionId)
   482         {
   487         {
   483         return *ipSessionId;
   488         return *ipSessionId;
   484         }
   489         }
   485     else
   490     else
   642     }
   647     }
   643 
   648 
   644 TInt CSenServiceConnectionImpl::ResponseFromChunk(CSenChunk& aClientOp,
   649 TInt CSenServiceConnectionImpl::ResponseFromChunk(CSenChunk& aClientOp,
   645                                                   HBufC8*& aResponseTo)
   650                                                   HBufC8*& aResponseTo)
   646     {
   651     {
       
   652     TLSLOG(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel,(_L("CSenServiceConnectionImpl::ResponseFromChunk()")));
   647     TInt leaveCode(KErrNone); // handle OOM case:
   653     TInt leaveCode(KErrNone); // handle OOM case:
   648     // Read response message, SOAP fault OR error
   654     // Read response message, SOAP fault OR error
   649     TPtrC8 response;
   655     TPtrC8 response;
   650     TInt retVal = aClientOp.DescFromChunk(response); // if handle is closed, this will panic.
   656     TInt retVal = aClientOp.DescFromChunk(response); // if handle is closed, this will panic.
   651     if(retVal==KErrNone)
   657     if(retVal==KErrNone)
   657     if(leaveCode!=KErrNone)
   663     if(leaveCode!=KErrNone)
   658         {
   664         {
   659         // OOM occured
   665         // OOM occured
   660         retVal = leaveCode;
   666         retVal = leaveCode;
   661         }
   667         }
   662         
   668     TLSLOG(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel,(_L("CSenServiceConnectionImpl::ResponseFromChunk() Completed")));
   663     return retVal;
   669     return retVal;
   664     }
   670     }
   665 
   671 
   666 TInt CSenServiceConnectionImpl::SubmitL(const TDesC8& aRequest,
   672 TInt CSenServiceConnectionImpl::SubmitL(const TDesC8& aRequest,
   667                                         HBufC8*& aResponseTo )
   673                                         HBufC8*& aResponseTo )
   873         TLSLOG(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel,(_L("CSenServiceConnectionImpl::CheckConnection - KErrServerBusy (not enough message slots)")));
   879         TLSLOG(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel,(_L("CSenServiceConnectionImpl::CheckConnection - KErrServerBusy (not enough message slots)")));
   874         retVal = KErrServerBusy;
   880         retVal = KErrServerBusy;
   875         }
   881         }
   876     else if (!IsActive())
   882     else if (!IsActive())
   877         {
   883         {
   878         SetActive();
   884        	SetActive();
   879         iStatus = KRequestPending;
   885         iStatus = KRequestPending;
   880         }
   886         }
   881 	TLSLOG(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel,(_L("CSenServiceConnectionImpl::CheckConnection Completed")));
   887 	TLSLOG(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel,(_L("CSenServiceConnectionImpl::CheckConnection Completed")));
   882     return retVal;
   888     return retVal;
   883     }
   889     }
  1299         if(leaveCode)
  1305         if(leaveCode)
  1300             {
  1306             {
  1301             TLSLOG_FORMAT((KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel , _L8("MSenServiceConsumer::HandleErrorL leaved: %d"), leaveCode ));
  1307             TLSLOG_FORMAT((KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel , _L8("MSenServiceConsumer::HandleErrorL leaved: %d"), leaveCode ));
  1302             }
  1308             }
  1303         }
  1309         }
  1304 		        
  1310 		TLSLOG(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel,(_L("CSenServiceConnectionImpl::InitializeL() Completed")));
  1305     }
  1311     }
  1306 
  1312 
  1307 TPtrC CSenServiceConnectionImpl::NextChunkName()
  1313 TPtrC CSenServiceConnectionImpl::NextChunkName()
  1308     {
  1314     {
       
  1315     TLSLOG(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel,(_L("CSenServiceConnectionImpl::NextChunkName()")));
  1309     if(ipChunkName)
  1316     if(ipChunkName)
  1310         {
  1317         {
  1311         iChunkNameNumber++;
  1318         iChunkNameNumber++;
  1312         TPtr chunkname = ipChunkName->Des();
  1319         TPtr chunkname = ipChunkName->Des();
  1313         chunkname.Zero();
  1320         chunkname.Zero();
  1330         TLSLOG_FORMAT((KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel , _L("CSenServiceConnectionImpl::NextChunkName(): %S"), &chunkname));
  1337         TLSLOG_FORMAT((KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel , _L("CSenServiceConnectionImpl::NextChunkName(): %S"), &chunkname));
  1331         return chunkname.Left(KMaxName); // max length of TName
  1338         return chunkname.Left(KMaxName); // max length of TName
  1332         }
  1339         }
  1333     else
  1340     else
  1334         {
  1341         {
       
  1342         TLSLOG(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel,(_L("CSenServiceConnectionImpl::NextChunkName() returns KNullDesC()")));
  1335         return KNullDesC();
  1343         return KNullDesC();
  1336         }  
  1344         }  
  1337     }
  1345     }
  1338 void CSenServiceConnectionImpl::RunL()
  1346 void CSenServiceConnectionImpl::RunL()
  1339     {
  1347     {
  1932                 DeliverResponseL(aStatus);
  1940                 DeliverResponseL(aStatus);
  1933                 }
  1941                 }
  1934             break ;
  1942             break ;
  1935             }
  1943             }
  1936         }
  1944         }
       
  1945     TLSLOG_L(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel ,"CSenServiceConnectionImpl::HandleMessageFromChildAOL Completed");
  1937     }
  1946     }
  1938 
  1947 
  1939 // Helper function, which delivers response to Service Consumer 
  1948 // Helper function, which delivers response to Service Consumer 
  1940 void CSenServiceConnectionImpl::DeliverResponseL(const TInt aErrorCode, CSenChunk* apOperation)
  1949 void CSenServiceConnectionImpl::DeliverResponseL(const TInt aErrorCode, CSenChunk* apOperation)
  1941     {
  1950     {
  1974 
  1983 
  1975         
  1984         
  1976     if( statusCode == KErrNone )
  1985     if( statusCode == KErrNone )
  1977         {
  1986         {
  1978         // STANDARD, "OK" RESPONSE
  1987         // STANDARD, "OK" RESPONSE
  1979         TLSLOG_FORMAT((KSenServiceConnectionLogChannelBase+iConnectionID, KNormalLogLevel , _L8("- response, (%d bytes):"), response.Length()));
  1988         TLSLOG_FORMAT((KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel , _L8("- response, (%d bytes):"), response.Length()));
  1980         TLSLOG_ALL(KSenServiceConnectionLogChannelBase+iConnectionID, KMaxLogLevel ,(response));
  1989         TLSLOG_ALL(KSenServiceConnectionLogChannelBase+iConnectionID, KMaxLogLevel ,(response));
  1981         TRAPD( err, iObserver->HandleMessageL( response ); )
  1990         TRAPD( err, iObserver->HandleMessageL( response ); )
  1982         if(err)
  1991         if(err)
  1983             {
  1992             {
  1984             TLSLOG_FORMAT((KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel , _L8("DeliverResponseL: HandleMessageL() leaved: %d"), err));
  1993             TLSLOG_FORMAT((KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel , _L8("DeliverResponseL: HandleMessageL() leaved: %d"), err));
  1989         if( statusCode == KErrSenSoapFault)
  1998         if( statusCode == KErrSenSoapFault)
  1990             {
  1999             {
  1991             TInt error = statusCode;   
  2000             TInt error = statusCode;   
  1992                 
  2001                 
  1993             // SOAP FAULT
  2002             // SOAP FAULT
  1994             TLSLOG_FORMAT((KSenServiceConnectionLogChannelBase+iConnectionID, KNormalLogLevel , _L8("- SOAP fault (%d bytes):"), response.Length()));
  2003             TLSLOG_FORMAT((KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel , _L8("- SOAP fault (%d bytes):"), response.Length()));
  1995             TLSLOG_ALL(KSenServiceConnectionLogChannelBase+iConnectionID, KMaxLogLevel ,(response));
  2004             TLSLOG_ALL(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel ,(response));
  1996 
  2005 
  1997             if ( error == KErrSenSoapFault && !iInitialized ) // China DC
  2006             if ( error == KErrSenSoapFault && !iInitialized ) // China DC
  1998                 {
  2007                 {
  1999                 TLSLOG_L(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel ,"CSenServiceConnectionImpl::DeliverResponseL:");
  2008                 TLSLOG_L(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel ,"CSenServiceConnectionImpl::DeliverResponseL:");
  2000                 TLSLOG_L(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel ,"- Since the SC is NOT ready, pass KErrSenAuthenticationFault to HandleErrorL instead of KErrSenSoapFault");
  2009                 TLSLOG_L(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel ,"- Since the SC is NOT ready, pass KErrSenAuthenticationFault to HandleErrorL instead of KErrSenSoapFault");
  2022         {
  2031         {
  2023         iResponse = NULL;
  2032         iResponse = NULL;
  2024         CleanupStack::PopAndDestroy( pMessage );
  2033         CleanupStack::PopAndDestroy( pMessage );
  2025         }
  2034         }
  2026     iTransactionIdKnown = EFalse;
  2035     iTransactionIdKnown = EFalse;
       
  2036     TLSLOG_L(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel ,"CSenServiceConnectionImpl::DeliverResponseL Completed");
  2027     }
  2037     }
  2028 
  2038 
  2029 void CSenServiceConnectionImpl::DoCancel()
  2039 void CSenServiceConnectionImpl::DoCancel()
  2030     {
  2040     {
  2031     TLSLOG(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel,(_L("CSenServiceConnectionImpl::DoCancel")));
  2041     TLSLOG(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel,(_L("CSenServiceConnectionImpl::DoCancel")));
  2288     }
  2298     }
  2289 
  2299 
  2290 
  2300 
  2291 const TDesC8& CSenServiceConnectionImpl::LocalName() const
  2301 const TDesC8& CSenServiceConnectionImpl::LocalName() const
  2292     {
  2302     {
       
  2303     TLSLOG(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel,(_L("CSenServiceConnectionImpl::LocalName()")));
  2293     if(iFragment)
  2304     if(iFragment)
  2294         return iFragment->LocalName();
  2305         return iFragment->LocalName();
  2295     else
  2306     else
  2296         return KNullDesC8;
  2307         return KNullDesC8;
  2297     }
  2308     }
  2298 
  2309 
  2299 const TDesC8& CSenServiceConnectionImpl::NsUri() const
  2310 const TDesC8& CSenServiceConnectionImpl::NsUri() const
  2300     {
  2311     {
       
  2312     TLSLOG(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel,(_L("CSenServiceConnectionImpl::NsUri()")));
  2301     if(iFragment)
  2313     if(iFragment)
  2302         return iFragment->NsUri();
  2314         return iFragment->NsUri();
  2303     else
  2315     else
  2304         return KNullDesC8;
  2316         return KNullDesC8;
  2305     }
  2317     }
  2306 
  2318 
  2307 const TDesC8& CSenServiceConnectionImpl::NsPrefix() const
  2319 const TDesC8& CSenServiceConnectionImpl::NsPrefix() const
  2308     {
  2320     {
       
  2321     TLSLOG(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel,(_L("CSenServiceConnectionImpl::NsPrefix()")));
  2309     if(iFragment)
  2322     if(iFragment)
  2310         return iFragment->NsPrefix();
  2323         return iFragment->NsPrefix();
  2311     else
  2324     else
  2312         return KNullDesC8;
  2325         return KNullDesC8;
  2313     }
  2326     }
  2314 
  2327 
  2315 void CSenServiceConnectionImpl::WriteAsXMLToL(RWriteStream& aWriteStream)
  2328 void CSenServiceConnectionImpl::WriteAsXMLToL(RWriteStream& aWriteStream)
  2316     {
  2329     {
       
  2330     TLSLOG(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel,(_L("CSenServiceConnectionImpl::WriteAsXMLToL()")));
  2317     if(iFragment)
  2331     if(iFragment)
  2318         {
  2332         {
  2319         iFragment->WriteAsXMLToL(aWriteStream);
  2333         iFragment->WriteAsXMLToL(aWriteStream);
  2320         }
  2334         }
  2321     }
  2335     }
  2322 
  2336 
  2323 HBufC* CSenServiceConnectionImpl::AsXmlUnicodeL()
  2337 HBufC* CSenServiceConnectionImpl::AsXmlUnicodeL()
  2324     {
  2338     {
       
  2339     TLSLOG(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel,(_L("CSenServiceConnectionImpl::AsXmlUnicodeL()")));
  2325     if(iFragment)
  2340     if(iFragment)
  2326         {
  2341         {
  2327         return iFragment->AsXmlUnicodeL();
  2342         return iFragment->AsXmlUnicodeL();
  2328         }
  2343         }
  2329     else
  2344     else
  2332         }
  2347         }
  2333     }
  2348     }
  2334 
  2349 
  2335 HBufC8* CSenServiceConnectionImpl::AsXmlL()
  2350 HBufC8* CSenServiceConnectionImpl::AsXmlL()
  2336     {
  2351     {
       
  2352     TLSLOG(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel,(_L("CSenServiceConnectionImpl::AsXmlL()")));
  2337     if(iFragment)
  2353     if(iFragment)
  2338         {
  2354         {
  2339         return iFragment->AsXmlL();
  2355         return iFragment->AsXmlL();
  2340         }
  2356         }
  2341     else
  2357     else
  2382     return retVal;    
  2398     return retVal;    
  2383     }
  2399     }
  2384 
  2400 
  2385 TBool CSenServiceConnectionImpl::ConsistsOfL(MSenFragment& aCandidate)
  2401 TBool CSenServiceConnectionImpl::ConsistsOfL(MSenFragment& aCandidate)
  2386     {
  2402     {
       
  2403     TLSLOG(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel,(_L("CSenServiceConnectionImpl::ConsistsOfL()")));
  2387     if (iFragment)
  2404     if (iFragment)
  2388         {
  2405         {
  2389         return iFragment->ConsistsOfL(aCandidate);
  2406         return iFragment->ConsistsOfL(aCandidate);
  2390         }
  2407         }
  2391     else
  2408     else
  2422     return retVal;
  2439     return retVal;
  2423     }
  2440     }
  2424 
  2441 
  2425 TInt CSenServiceConnectionImpl::TxnId()
  2442 TInt CSenServiceConnectionImpl::TxnId()
  2426     {
  2443     {
       
  2444     TLSLOG(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel,(_L("CSenServiceConnectionImpl::TxnId()")));
  2427     if( iTransactionIdKnown )
  2445     if( iTransactionIdKnown )
  2428         {
  2446         {
  2429         if( iTxnId>KErrNone )
  2447         if( iTxnId>KErrNone )
  2430             {
  2448             {
  2431             if( iDispatcherEnabled )
  2449             if( iDispatcherEnabled )
  2510             }
  2528             }
  2511     	ipSenServiceDispatcher->RemoveFromQueue(aTransactionID);
  2529     	ipSenServiceDispatcher->RemoveFromQueue(aTransactionID);
  2512     	TRAP(retVal, DeliverResponseL(KErrSenCancelled,NULL));
  2530     	TRAP(retVal, DeliverResponseL(KErrSenCancelled,NULL));
  2513     	if( retVal != KErrNone)
  2531     	if( retVal != KErrNone)
  2514     		{
  2532     		{
       
  2533     		TLSLOG_FORMAT((KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel , _L8("CSenServiceConnectionImpl::CancelTransaction returns [%d]" ), retVal ));
  2515     		return retVal;
  2534     		return retVal;
  2516     		}
  2535     		}
  2517     	}  
  2536     	}  
  2518         }
  2537         }
  2519     else // DISPATCHER IS DISABLED
  2538     else // DISPATCHER IS DISABLED
  2520         {
  2539         {
  2521         iConnection.CancelRequest(aTransactionID);
  2540         iConnection.CancelRequest(aTransactionID);
  2522         }
  2541         }
       
  2542     TLSLOG_FORMAT((KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel , _L8("CSenServiceConnectionImpl::CancelTransaction returns [%d]" ), KErrNone ));
  2523     return KErrNone;
  2543     return KErrNone;
  2524     }
  2544     }
  2525         
  2545         
  2526 TInt CSenServiceConnectionImpl::TransportPropertiesL(HBufC8*& aProperties)
  2546 TInt CSenServiceConnectionImpl::TransportPropertiesL(HBufC8*& aProperties)
  2527     {
  2547     {
  2553     return retVal;
  2573     return retVal;
  2554     }
  2574     }
  2555 
  2575 
  2556 RChunkMap& CSenServiceConnectionImpl::ChunkMapL()
  2576 RChunkMap& CSenServiceConnectionImpl::ChunkMapL()
  2557     {
  2577     {
       
  2578     TLSLOG(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel,(_L("CSenServiceConnectionImpl::ChunkMapL()")));
  2558     if(!iChunkMap)
  2579     if(!iChunkMap)
  2559         {
  2580         {
  2560         iChunkMap = new (ELeave) RChunkMap(ETrue, ETrue);
  2581         iChunkMap = new (ELeave) RChunkMap(ETrue, ETrue);
  2561         }
  2582         }
  2562     return *iChunkMap;
  2583     return *iChunkMap;
  2563     }
  2584     }
  2564     
  2585     
  2565 RPointerArray<CSenAsyncOperation>& CSenServiceConnectionImpl::AsyncOpsArrayL() //codescannerwarnings
  2586 RPointerArray<CSenAsyncOperation>& CSenServiceConnectionImpl::AsyncOpsArrayL() //codescannerwarnings
  2566     {
  2587     {
       
  2588     TLSLOG(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel,(_L("CSenServiceConnectionImpl::AsyncOpsArrayL()")));
  2567     if(!iAsyncOpsArray)
  2589     if(!iAsyncOpsArray)
  2568         {
  2590         {
  2569         iAsyncOpsArray = new (ELeave) RPointerArray<CSenAsyncOperation>;
  2591         iAsyncOpsArray = new (ELeave) RPointerArray<CSenAsyncOperation>;
  2570         }
  2592         }
  2571     return *iAsyncOpsArray;
  2593     return *iAsyncOpsArray;
  2832 
  2854 
  2833 TInt CSenServiceConnectionImpl::AssignPropertiesToChunkL(CSenChunk& aChunk,
  2855 TInt CSenServiceConnectionImpl::AssignPropertiesToChunkL(CSenChunk& aChunk,
  2834                                                         CSenSoapEnvelope& aMessage,
  2856                                                         CSenSoapEnvelope& aMessage,
  2835                                                         const TDesC8& aProperties)	//codescannerwarnings
  2857                                                         const TDesC8& aProperties)	//codescannerwarnings
  2836     {
  2858     {
       
  2859     TLSLOG(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel,(_L("CSenServiceConnectionImpl::AssignPropertiesToChunkL()")));
  2837     TInt retVal(KErrNone);
  2860     TInt retVal(KErrNone);
  2838     
  2861     
  2839     if ( aMessage.SoapAction2().Length() > 0 )
  2862     if ( aMessage.SoapAction2().Length() > 0 )
  2840         {
  2863         {
  2841         CSenTransportProperties* pProps = CSenTransportProperties::NewLC();
  2864         CSenTransportProperties* pProps = CSenTransportProperties::NewLC();
  2868             {
  2891             {
  2869             retVal = aChunk.DescToChunk(*pSoapMsg);
  2892             retVal = aChunk.DescToChunk(*pSoapMsg);
  2870             }
  2893             }
  2871         delete pSoapMsg;
  2894         delete pSoapMsg;
  2872         }    
  2895         }    
  2873     
  2896 		TLSLOG_FORMAT((KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel , _L8("CSenServiceConnectionImpl::AssignPropertiesToChunkL returns [%d]" ), retVal ));
  2874     return retVal;
  2897     return retVal;
  2875     }
  2898     }
  2876     
  2899     
  2877 TInt CSenServiceConnectionImpl::AssignMessageToChunkL( CSenChunk& aChunk,
  2900 TInt CSenServiceConnectionImpl::AssignMessageToChunkL( CSenChunk& aChunk,
  2878                                                       MSenMessage& aMessage ) //codescannerwarnings
  2901                                                       MSenMessage& aMessage ) //codescannerwarnings
  2997         
  3020         
  2998 
  3021 
  2999     CleanupStack::PopAndDestroy(pSerializer);
  3022     CleanupStack::PopAndDestroy(pSerializer);
  3000     CleanupStack::PopAndDestroy(&buffer);
  3023     CleanupStack::PopAndDestroy(&buffer);
  3001     CleanupStack::PopAndDestroy(pPropsAsXml);
  3024     CleanupStack::PopAndDestroy(pPropsAsXml);
  3002     
  3025     TLSLOG_FORMAT((KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel , _L8("CSenServiceConnectionImpl::AssignMessageToChunkL returns [%d]" ), retVal ));
  3003     return retVal;
  3026     return retVal;
  3004     }
  3027     }
  3005     
  3028     
  3006 // THIS IS THE SECOND, __MUCH IMPROVED__ VARIANT, WHICH SUPPORTS BOTH CHUNK AND FILE ATTACHEMENTS,
  3029 // THIS IS THE SECOND, __MUCH IMPROVED__ VARIANT, WHICH SUPPORTS BOTH CHUNK AND FILE ATTACHEMENTS,
  3007 // plus multiple BLOBs PER ONE MESSAGE AND multiple simultaneous transfers
  3030 // plus multiple BLOBs PER ONE MESSAGE AND multiple simultaneous transfers
  3008 TInt CSenServiceConnectionImpl::MoveBinaryContainersToServer( CSenConnectionChunk& aOperation, RArray<TXmlEngDataContainer>& aList )
  3031 TInt CSenServiceConnectionImpl::MoveBinaryContainersToServer( CSenConnectionChunk& aOperation, RArray<TXmlEngDataContainer>& aList )
  3009     {
  3032     {
       
  3033     TLSLOG(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel,(_L("CSenServiceConnectionImpl::MoveBinaryContainersToServer()")));
  3010     TInt retVal(KErrNone);
  3034     TInt retVal(KErrNone);
  3011     
  3035     
  3012     TPtrC8 cid8;
  3036     TPtrC8 cid8;
  3013     TBuf8<100> cid(KNullDesC8);
  3037     TBuf8<100> cid(KNullDesC8);
  3014     TInt size;
  3038     TInt size;
  3099                     {
  3123                     {
  3100                     break;
  3124                     break;
  3101                     }
  3125                     }
  3102     			}
  3126     			}
  3103     		}
  3127     		}
  3104         }
  3128      }
       
  3129     TLSLOG_FORMAT((KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel , _L8("CSenServiceConnectionImpl::MoveBinaryContainersToServer returns [%d]" ), retVal ));
  3105     return retVal;
  3130     return retVal;
  3106     }
  3131     }
  3107     
  3132     
  3108 TInt CSenServiceConnectionImpl::MoveFileChunkHandleToServer(CSenConnectionChunk& aOperation)
  3133 TInt CSenServiceConnectionImpl::MoveFileChunkHandleToServer(CSenConnectionChunk& aOperation)
  3109     {
  3134     {
       
  3135     TLSLOG(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel,(_L("CSenServiceConnectionImpl::MoveFileChunkHandleToServer()")));
  3110     TInt retVal(KErrNone);
  3136     TInt retVal(KErrNone);
  3111     retVal = iConnection.SendFileHandle(aOperation,iSharedFileHandle);
  3137     retVal = iConnection.SendFileHandle(aOperation,iSharedFileHandle);
  3112     return retVal;
  3138     return retVal;
  3113     }
  3139     }
  3114     
  3140     
  3169       
  3195       
  3170     }
  3196     }
  3171     
  3197     
  3172 TInt CSenServiceConnectionImpl::SendL( MSenMessage& aMessage )
  3198 TInt CSenServiceConnectionImpl::SendL( MSenMessage& aMessage )
  3173     {
  3199     {
       
  3200     TLSLOG(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel,(_L("CSenServiceConnectionImpl::MoveFileChunkHandleToServer(aMessage)")));
  3174     if ( aMessage.IsSafeToCast( MSenMessage::ESoapEnvelope2 ) )
  3201     if ( aMessage.IsSafeToCast( MSenMessage::ESoapEnvelope2 ) )
  3175         {
  3202         {
  3176         CSenSoapEnvelope2& message = (CSenSoapEnvelope2&)aMessage;
  3203         CSenSoapEnvelope2& message = (CSenSoapEnvelope2&)aMessage;
  3177         return SendL(message);
  3204         return SendL(message);
  3178         }
  3205         }
  3268     }
  3295     }
  3269 
  3296 
  3270 TInt CSenServiceConnectionImpl::SubmitL( MSenMessage& aMessage,
  3297 TInt CSenServiceConnectionImpl::SubmitL( MSenMessage& aMessage,
  3271                                          CSenSoapEnvelope2*& aResponseTo )
  3298                                          CSenSoapEnvelope2*& aResponseTo )
  3272     {
  3299     {
       
  3300     TLSLOG(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel,(_L("CSenServiceConnectionImpl::SubmitL(aMessage, aResponseTo)")));
  3273     if ( aMessage.IsSafeToCast( MSenMessage::ESoapEnvelope2) )
  3301     if ( aMessage.IsSafeToCast( MSenMessage::ESoapEnvelope2) )
  3274         {
  3302         {
  3275         CSenSoapEnvelope2& message = (CSenSoapEnvelope2&)aMessage;
  3303         CSenSoapEnvelope2& message = (CSenSoapEnvelope2&)aMessage;
  3276         
  3304         
  3277         return SubmitL(message, aResponseTo);
  3305         return SubmitL(message, aResponseTo);
  3439     }
  3467     }
  3440 
  3468 
  3441 
  3469 
  3442 void CSenServiceConnectionImpl::MigrateToPrefferedCarrierL(TBool &aUserChoice)
  3470 void CSenServiceConnectionImpl::MigrateToPrefferedCarrierL(TBool &aUserChoice)
  3443     {
  3471     {
       
  3472     TLSLOG(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel,(_L("CSenServiceConnectionImpl::MigrateToPrefferedCarrierL()")));
  3444     if (iMobiltyObserver)
  3473     if (iMobiltyObserver)
  3445         {
  3474         {
  3446         User::LeaveIfError(iConnection.MigrateToPrefferedCarrierL(aUserChoice));    	
  3475         User::LeaveIfError(iConnection.MigrateToPrefferedCarrierL(aUserChoice));    	
  3447         }
  3476         }
  3448 	else
  3477 	else
  3449 	    {
  3478 	    {
  3450         User::Leave(KErrNotFound);
  3479         User::Leave(KErrNotFound);
  3451 	    }	 
  3480 	    }	 
       
  3481 	  TLSLOG(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel,(_L("CSenServiceConnectionImpl::MigrateToPrefferedCarrierL() Completed")));
  3452     }
  3482     }
  3453 
  3483 
  3454 void CSenServiceConnectionImpl::NewCarrierAcceptedL(TBool &aUserChoice)
  3484 void CSenServiceConnectionImpl::NewCarrierAcceptedL(TBool &aUserChoice)
  3455     {
  3485     {
       
  3486     TLSLOG(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel,(_L("CSenServiceConnectionImpl::NewCarrierAcceptedL()")));
  3456     if (iMobiltyObserver)
  3487     if (iMobiltyObserver)
  3457         {
  3488         {
  3458         User::LeaveIfError(iConnection.NewCarrierAcceptedL(aUserChoice));    	
  3489         User::LeaveIfError(iConnection.NewCarrierAcceptedL(aUserChoice));    	
  3459         }
  3490         }
  3460 	else
  3491 	else
  3461 	    {
  3492 	    {
  3462         User::Leave(KErrNotFound);
  3493         User::Leave(KErrNotFound);
  3463 	    }	 
  3494 	    }
       
  3495 	  TLSLOG(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel,(_L("CSenServiceConnectionImpl::NewCarrierAcceptedL() Completed")));  	 
  3464     }
  3496     }
  3465 #endif
  3497 #endif
  3466 
  3498 
  3467 
  3499 
  3468 TInt CSenServiceConnectionImpl::SendProgressToHostlet(TInt aTxnId,
  3500 TInt CSenServiceConnectionImpl::SendProgressToHostlet(TInt aTxnId,
  3469         TBool aIncoming, const TDesC8& aMessage, const TDesC8& aCid,
  3501         TBool aIncoming, const TDesC8& aMessage, const TDesC8& aCid,
  3470         TInt aProgress)
  3502         TInt aProgress)
  3471     {
  3503     {
       
  3504     TLSLOG(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel,(_L("CSenServiceConnectionImpl::SendProgressToHostlet()")));
  3472     TBool isSoap = (aMessage != KNullDesC8);
  3505     TBool isSoap = (aMessage != KNullDesC8);
  3473     TPtrC8 ptr;
  3506     TPtrC8 ptr;
  3474     if (isSoap)
  3507     if (isSoap)
  3475         {
  3508         {
  3476         ptr.Set(aMessage);
  3509         ptr.Set(aMessage);
  3499         {
  3532         {
  3500         TLSLOG_FORMAT((KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel , _L8("Fatal(!) -- CSenServiceConnectionImpl::DeliverStatus(): MSenServiceConsumer::SetStatus - leaves with %d"), leaveCode));
  3533         TLSLOG_FORMAT((KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel , _L8("Fatal(!) -- CSenServiceConnectionImpl::DeliverStatus(): MSenServiceConsumer::SetStatus - leaves with %d"), leaveCode));
  3501         TLSLOG_FORMAT(( iTlsLogStatusChannel, KSenServiceConnectionStatusLogLevel, _L("Fatal(!) -- CSenServiceConnectionImpl::DeliverStatus(): MSenServiceConsumer::SetStatus - leaves with %d"), leaveCode));
  3534         TLSLOG_FORMAT(( iTlsLogStatusChannel, KSenServiceConnectionStatusLogLevel, _L("Fatal(!) -- CSenServiceConnectionImpl::DeliverStatus(): MSenServiceConsumer::SetStatus - leaves with %d"), leaveCode));
  3502         leaveCode = KErrNone;
  3535         leaveCode = KErrNone;
  3503         }
  3536         }
       
  3537     TLSLOG(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel,(_L("CSenServiceConnectionImpl::DeliverStatus() Completed")));
  3504     }
  3538     }
  3505     
  3539     
  3506     
  3540     
  3507  TInt CSenServiceConnectionImpl::IdentityProviderL( CSenIdentityProvider*& apIdentityProvider )
  3541  TInt CSenServiceConnectionImpl::IdentityProviderL( CSenIdentityProvider*& apIdentityProvider )
  3508     {
  3542     {
  3563 	TLSLOG_L(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel ,"CSenServiceConnectionImpl::IdentityProviderL Completed");   	
  3597 	TLSLOG_L(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel ,"CSenServiceConnectionImpl::IdentityProviderL Completed");   	
  3564     return retVal;    
  3598     return retVal;    
  3565     }
  3599     }
  3566 
  3600 
  3567 TInt CSenServiceConnectionImpl::SearchIdentityProviderL( CSenIdentityProvider*& apIdentityProvider, const TDesC8& aProviderId )
  3601 TInt CSenServiceConnectionImpl::SearchIdentityProviderL( CSenIdentityProvider*& apIdentityProvider, const TDesC8& aProviderId )
  3568 		{
  3602 			{
       
  3603 			TLSLOG(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel,(_L("CSenServiceConnectionImpl::SearchIdentityProviderL()")));
  3569 	    TInt retVal(KErrNone);
  3604 	    TInt retVal(KErrNone);
  3570 	    
  3605 	    
  3571 	    CSenChunk* pSenChunk = CSenChunk::NewLC(NextChunkName());
  3606 	    CSenChunk* pSenChunk = CSenChunk::NewLC(NextChunkName());
  3572 	    pSenChunk->SetLogger(Log());
  3607 	    pSenChunk->SetLogger(Log());
  3573 	    retVal = pSenChunk->CreateChunk();
  3608 	    retVal = pSenChunk->CreateChunk();
  3602 	                    }
  3637 	                    }
  3603 	                }
  3638 	                }
  3604 	            }
  3639 	            }
  3605 	        }
  3640 	        }
  3606 	    CleanupStack::PopAndDestroy(pSenChunk);
  3641 	    CleanupStack::PopAndDestroy(pSenChunk);
  3607 
  3642 			TLSLOG_FORMAT((KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel , _L8("CSenServiceConnectionImpl::SearchIdentityProviderL returns [%d]" ), retVal ));
  3608 	    return retVal; 
  3643 	    return retVal; 
  3609 		}
  3644 		}
  3610  
  3645  
  3611 TInt CSenServiceConnectionImpl::RegisterAuthenticationObserver()
  3646 TInt CSenServiceConnectionImpl::RegisterAuthenticationObserver()
  3612 	{
  3647 	{
  3653     return retVal;    
  3688     return retVal;    
  3654 }
  3689 }
  3655 
  3690 
  3656 TBool CSenServiceConnectionImpl::HasConnectionAgentCallbackInitialized()
  3691 TBool CSenServiceConnectionImpl::HasConnectionAgentCallbackInitialized()
  3657 	{
  3692 	{
       
  3693 	TLSLOG(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel,(_L("CSenServiceConnectionImpl::HasConnectionAgentCallbackInitialized()")));
  3658 #ifdef __ENABLE_ALR__
  3694 #ifdef __ENABLE_ALR__
  3659 	if((ipAuthProvider || iFilesObserver || iMobiltyObserver || ipCoBrandingObserver) && iConnectionAgentCallbackInitialized)
  3695 	if((ipAuthProvider || iFilesObserver || iMobiltyObserver || ipCoBrandingObserver) && iConnectionAgentCallbackInitialized)
  3660 #else
  3696 #else
  3661 	if((ipAuthProvider || iFilesObserver || ipCoBrandingObserver) && iConnectionAgentCallbackInitialized)
  3697 	if((ipAuthProvider || iFilesObserver || ipCoBrandingObserver) && iConnectionAgentCallbackInitialized)
  3662 #endif //__ENABLE_ALR__
  3698 #endif //__ENABLE_ALR__
  3753 	}
  3789 	}
  3754 	
  3790 	
  3755 void CSenServiceConnectionImpl::DataTrafficDetails(TSenDataTrafficDetails& aDetails,
  3791 void CSenServiceConnectionImpl::DataTrafficDetails(TSenDataTrafficDetails& aDetails,
  3756 												   TSenDataTrafficOperations& aOperations) 
  3792 												   TSenDataTrafficOperations& aOperations) 
  3757 	{
  3793 	{
       
  3794 	TLSLOG(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel,(_L("CSenServiceConnectionImpl::DataTrafficDetails()")));
  3758 	iConnection.DataTrafficDetails(aDetails, aOperations);
  3795 	iConnection.DataTrafficDetails(aDetails, aOperations);
  3759 	}	
  3796 	}	
  3760 	
  3797 	
  3761 
  3798 
  3762 TAny* CSenServiceConnectionImpl::InterfaceByUid( TUid aUID )
  3799 TAny* CSenServiceConnectionImpl::InterfaceByUid( TUid aUID )
  3781     return NULL;
  3818     return NULL;
  3782     }
  3819     }
  3783 
  3820 
  3784 TInt CSenServiceConnectionImpl::PendingTrasanctionsCount()
  3821 TInt CSenServiceConnectionImpl::PendingTrasanctionsCount()
  3785 	{
  3822 	{
       
  3823 	TLSLOG(KSenServiceConnectionLogChannelBase+iConnectionID, KMinLogLevel,(_L("CSenServiceConnectionImpl::PendingTrasanctionsCount()")));
  3786 	return iAsyncOpsArray->Count();
  3824 	return iAsyncOpsArray->Count();
  3787 	}										
  3825 	}										
  3788 
  3826 
  3789 CSenAsyncOperation* CSenAsyncOperation::NewL(CSenServiceConnectionImpl* aActive)
  3827 CSenAsyncOperation* CSenAsyncOperation::NewL(CSenServiceConnectionImpl* aActive)
  3790     {
  3828     {
  3821                            
  3859                            
  3822     iTxnIdBuffer.Set(reinterpret_cast<TUint8*>(&iTxnId),
  3860     iTxnIdBuffer.Set(reinterpret_cast<TUint8*>(&iTxnId),
  3823                      sizeof(TInt),
  3861                      sizeof(TInt),
  3824                      sizeof(TInt));
  3862                      sizeof(TInt));
  3825                      
  3863                      
  3826     SetActive();
  3864     if(!IsActive())
       
  3865     	SetActive();
  3827 	iStatus = KRequestPending;
  3866 	iStatus = KRequestPending;
  3828 #ifdef EKA2
  3867 #ifdef EKA2
  3829     iActive->AsyncOpsArrayL().AppendL(this);	//codescannerwarnings
  3868     iActive->AsyncOpsArrayL().AppendL(this);	//codescannerwarnings
  3830 #else
  3869 #else
  3831     User::LeaveIfError(iActive->AsyncOpsArrayL().Append(this));	//codescannerwarnings
  3870     User::LeaveIfError(iActive->AsyncOpsArrayL().Append(this));	//codescannerwarnings
  3917 	// Use secure id of the loading process instead of server process (ws client process secure id)
  3956 	// Use secure id of the loading process instead of server process (ws client process secure id)
  3918 	User::LeaveIfError(iConnectionStatusProperty.Attach(secureID, iConnectionID)); // secureid of the process will be category
  3957 	User::LeaveIfError(iConnectionStatusProperty.Attach(secureID, iConnectionID)); // secureid of the process will be category
  3919     CActiveScheduler::Add(this);
  3958     CActiveScheduler::Add(this);
  3920     // Initial subscription
  3959     // Initial subscription
  3921     iConnectionStatusProperty.Subscribe(iStatus);
  3960     iConnectionStatusProperty.Subscribe(iStatus);
  3922     SetActive();
  3961     if(!IsActive())
       
  3962     	SetActive();
  3923 	iStatus = KRequestPending;
  3963 	iStatus = KRequestPending;
  3924     }
  3964     }
  3925 
  3965 
  3926 CSenConnectionStatusObserver::~CSenConnectionStatusObserver()
  3966 CSenConnectionStatusObserver::~CSenConnectionStatusObserver()
  3927     {
  3967     {
  3941 void CSenConnectionStatusObserver::RunL()
  3981 void CSenConnectionStatusObserver::RunL()
  3942     {
  3982     {
  3943         
  3983         
  3944     TLSLOG_L( KSenServiceConnectionStatusLogChannelBase+iConnectionID, KSenServiceConnectionStatusLogLevel, "CSenConnectionStatusObserver::RunL" );
  3984     TLSLOG_L( KSenServiceConnectionStatusLogChannelBase+iConnectionID, KSenServiceConnectionStatusLogLevel, "CSenConnectionStatusObserver::RunL" );
  3945     iConnectionStatusProperty.Subscribe(iStatus);
  3985     iConnectionStatusProperty.Subscribe(iStatus);
  3946     SetActive();
  3986     if(!IsActive())
       
  3987     	SetActive();
  3947 	iStatus = KRequestPending;
  3988 	iStatus = KRequestPending;
  3948    
  3989    
  3949     TInt propertyValue(KErrNotFound);
  3990     TInt propertyValue(KErrNotFound);
  3950     TInt getPropertyCode = iConnectionStatusProperty.Get(propertyValue);
  3991     TInt getPropertyCode = iConnectionStatusProperty.Get(propertyValue);
  3951     if ( getPropertyCode == KErrNone)
  3992     if ( getPropertyCode == KErrNone)
  4019 	// Use KSenInterfaceUidFilesObserver extended consumer interface UID
  4060 	// Use KSenInterfaceUidFilesObserver extended consumer interface UID
  4020 	User::LeaveIfError(iFileProgressProperty.Attach(KSenInterfaceUidFilesObserver,  iConnectionID)); // KSenInterfaceUidFilesObserver UID will be category
  4061 	User::LeaveIfError(iFileProgressProperty.Attach(KSenInterfaceUidFilesObserver,  iConnectionID)); // KSenInterfaceUidFilesObserver UID will be category
  4021     CActiveScheduler::Add(this);
  4062     CActiveScheduler::Add(this);
  4022     // Initial subscription
  4063     // Initial subscription
  4023     iFileProgressProperty.Subscribe(iStatus);
  4064     iFileProgressProperty.Subscribe(iStatus);
  4024     SetActive();
  4065     if(!IsActive())
       
  4066     	SetActive();
  4025     iStatus = KRequestPending;
  4067     iStatus = KRequestPending;
  4026     }
  4068     }
  4027 
  4069 
  4028 CSenFileProgressObserver::~CSenFileProgressObserver()
  4070 CSenFileProgressObserver::~CSenFileProgressObserver()
  4029     {
  4071     {
  4041 
  4083 
  4042 void CSenFileProgressObserver::RunL()
  4084 void CSenFileProgressObserver::RunL()
  4043     {
  4085     {
  4044     // Resubscribe before processing new value to prevent missing updates(!):
  4086     // Resubscribe before processing new value to prevent missing updates(!):
  4045 	iFileProgressProperty.Subscribe(iStatus);
  4087 	iFileProgressProperty.Subscribe(iStatus);
  4046     SetActive();
  4088     if(!IsActive())
       
  4089     	SetActive();
  4047     iStatus = KRequestPending;
  4090     iStatus = KRequestPending;
  4048 
  4091 
  4049     TLSLOG_L( KSenServiceConnectionStatusLogChannelBase+iConnectionID, KSenServiceConnectionStatusLogLevel, "CSenFileProgressObserver::RunL" );
  4092     TLSLOG_L( KSenServiceConnectionStatusLogChannelBase+iConnectionID, KSenServiceConnectionStatusLogLevel, "CSenFileProgressObserver::RunL" );
  4050        
  4093        
  4051     TPckgBuf<TFileOutgoingTransferProgressBase> progress;
  4094     TPckgBuf<TFileOutgoingTransferProgressBase> progress;