browserutilities/downloadmgr/DownloadMgrServEng/Src/HttpConnHandler.cpp
branchRCL_3
changeset 36 c711bdda59f4
parent 34 220a17280356
child 48 79859ed3eea9
equal deleted inserted replaced
35:1f3c3f2f5b0a 36:c711bdda59f4
   246 void CHttpConnStageNotifier::RunL()
   246 void CHttpConnStageNotifier::RunL()
   247     {
   247     {
   248     if( iStatus == KErrNone )
   248     if( iStatus == KErrNone )
   249         {
   249         {
   250         TInt stage = iProgressBuf().iStage;
   250         TInt stage = iProgressBuf().iStage;
   251 
   251         if ( iProgressBuf().iStage == KLinkLayerClosed && iProgressBuf().iError == KErrDisconnected )
       
   252             iConnHandler->RetryNeeded(ETrue);
       
   253         
   252         iConnHandler->ConnectionStageChanged( stage );
   254         iConnHandler->ConnectionStageChanged( stage );
   253 
   255 
   254         if( stage > KConnectionUninitialised )
   256         if( stage != KLinkLayerClosed )
   255             // connection is still alive
   257             // connection is still alive
   256             {
   258             {
   257             iConnHandler->Connection().ProgressNotification( iProgressBuf, iStatus );
   259             iConnHandler->Connection().ProgressNotification( iProgressBuf, iStatus );
   258             SetActive();
   260             SetActive();
   259             }
   261             }
   298     CLOG_WRITE8( "Session open" );
   300     CLOG_WRITE8( "Session open" );
   299     InitSessionL();
   301     InitSessionL();
   300 
   302 
   301 	//Set it to zero
   303 	//Set it to zero
   302 	iIapId = 0;
   304 	iIapId = 0;
       
   305 	iRetryNeeded = EFalse;
   303     }
   306     }
   304 
   307 
   305 // -----------------------------------------------------------------------------
   308 // -----------------------------------------------------------------------------
   306 // CHttpConnHandler::NewL
   309 // CHttpConnHandler::NewL
   307 // Two-phased constructor.
   310 // Two-phased constructor.
   762     {
   765     {
   763     CLOG_WRITE8_1( "Stage: %d", aStage );
   766     CLOG_WRITE8_1( "Stage: %d", aStage );
   764 
   767 
   765     iConnStage = aStage;
   768     iConnStage = aStage;
   766 
   769 
   767     if( iConnStage == KConnectionUninitialised || 
   770    if( iConnStage == KLinkLayerClosed || 
   768         iConnStage == KDataTransferTemporarilyBlocked
   771         iConnStage == KDataTransferTemporarilyBlocked
   769         )
   772         )
   770         {
   773         {
   771         __ASSERT_DEBUG( iClientApp, DMPanic( KErrCorrupt ) );
   774         __ASSERT_DEBUG( iClientApp, DMPanic( KErrCorrupt ) );
   772         CArrayPtrFlat<CHttpDownload>* downloads = 
   775         CArrayPtrFlat<CHttpDownload>* downloads = 
   773                                     iClientApp->Downloads();
   776                                     iClientApp->Downloads();
   774         for( TInt i = 0; i < downloads->Count(); ++i )
   777         for( TInt i = 0; i < downloads->Count(); ++i )
   775             {
   778             {            
       
   779             if(iRetryNeeded  && ((*downloads)[i]->State() == EHttpDlMultipleMOFailed || 
       
   780                (*downloads)[i]->State() == EHttpDlInprogress ))
       
   781                 {
       
   782                 (*downloads)[i]->SetRetryFlag(ETrue);                
       
   783                 }
       
   784             }        
       
   785         
       
   786         for( TInt i = 0; i < downloads->Count(); ++i )
       
   787             {               
   776             if( (*downloads)[i]->ConnHandler() == this )
   788             if( (*downloads)[i]->ConnHandler() == this )
   777                 {
   789                 {
   778                 if( iConnStage == KConnectionUninitialised )
   790                 if( iConnStage == KLinkLayerClosed )
   779                     {
   791                     {
   780                     // from now on this name is invalid -> forget it!
   792                     // from now on this name is invalid -> forget it!
   781                     delete iConnName; iConnName = NULL;
   793                      delete iConnName; iConnName = NULL;                     
   782 
   794                      (*downloads)[i]->Disconnected();                  
   783                     (*downloads)[i]->Disconnected();
   795                                         
   784                     }
   796                     }
   785                 else
   797                 else
   786                     {
   798                     {                    
   787                     (*downloads)[i]->Suspended();
   799                     (*downloads)[i]->Suspended();
   788                     }
   800                     }
   789                 }
   801                 }
   790             }
   802             }
   791 
   803 
   792         if( iConnStage == KConnectionUninitialised )
   804         if( iConnStage == KLinkLayerClosed )
   793             {
   805             {
   794             ShutDown();
   806             ShutDown();
   795             }
   807             }
   796         if ( iConnStage == KDataTransferTemporarilyBlocked )
   808         if ( iConnStage == KDataTransferTemporarilyBlocked )
   797             {
   809             {
   801     else if( iConnStage == KLinkLayerOpen )
   813     else if( iConnStage == KLinkLayerOpen )
   802         // connection open
   814         // connection open
   803         {
   815         {
   804         Connected();
   816         Connected();
   805         }
   817         }
       
   818     iRetryNeeded = EFalse;
   806     }
   819     }
   807 
   820 
   808 // -----------------------------------------------------------------------------
   821 // -----------------------------------------------------------------------------
   809 // CHttpConnHandler::ConnectionError
   822 // CHttpConnHandler::ConnectionError
   810 // ?implementation_description
   823 // ?implementation_description