diff -r 63c982fb92f2 -r b73252188534 harvester/client/src/harvesterclient.cpp --- a/harvester/client/src/harvesterclient.cpp Thu Jul 15 19:07:24 2010 +0300 +++ b/harvester/client/src/harvesterclient.cpp Thu Aug 19 10:20:41 2010 +0300 @@ -54,10 +54,11 @@ WRITELOG( "RHarvesterClient::RHarvesterClient() - Constructor" ); OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_RHARVESTERCLIENT, "RHarvesterClient::RHarvesterClient" ); - iHarvesterClientAO = NULL; iObserver = NULL; iHEO = NULL; iRequestQueue = NULL; + iHarvesterClientAO = NULL; + iSessionWatcher = NULL; } // ---------------------------------------------------------------------------------------- @@ -69,7 +70,6 @@ WRITELOG( "RHarvesterClient::Connect()" ); OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_CONNECT, "RHarvesterClient::Connect" ); - RProperty property; const TInt error( property.Attach( KHarvesterPSShutdown, KShutdown, EOwnerThread ) ); TInt value = 0; @@ -114,28 +114,29 @@ } else { + WRITELOG1( "RHarvesterClient::Connect() - Server is not running or could not be started, error &d", err ); + delete iRequestQueue; + iRequestQueue = NULL; delete iHarvesterClientAO; iHarvesterClientAO = NULL; - delete iRequestQueue; - iRequestQueue = NULL; + return err; } -#ifdef _DEBUG - if ( err != KErrNone ) + if( err != KErrNone ) { - WRITELOG1( "RHarvesterClient::Connect() - Server is not running or could not be started, error &d", err ); + WRITELOG1( "RHarvesterClient::Connect() - Session creation failed, error &d", err ); + delete iRequestQueue; + iRequestQueue = NULL; + delete iHarvesterClientAO; + iHarvesterClientAO = NULL; } - else - { - WRITELOG( "RHarvesterClient::Connect() - no errors" ); - } - WRITELOG( "RHarvesterClient::Connect() - end" ); -#endif - + iHEO = NULL; iSessionWatcher = NULL; + WRITELOG( "RHarvesterClient::Connect() - end" ); + return err; } @@ -182,27 +183,37 @@ delete iSessionWatcher; iSessionWatcher = NULL; + + if( iRequestQueue && iRequestQueue->RequestsPending() ) + { + iRequestQueue->Cancel(); + } // cancels Harvest Complete request if it exist at server - UnregisterHarvestComplete(); + if( iObserver ) + { + RemoveObserver( iObserver ); + } WRITELOG( "RHarvesterClient::Close() - UnregisterHarvest done" ); if( iRequestQueue && iRequestQueue->RequestsPending() ) { - iRequestQueue->Cancel(); + WRITELOG( "RHarvesterClient::Close() - Pending harvesting requests detected -> ForceHarvest" ); iRequestQueue->ForceRequests(); } + WRITELOG( "RHarvesterClient::Close() - ForceHarvest done" ); + delete iRequestQueue; iRequestQueue = NULL; + delete iHEO; + iHEO = NULL; + delete iHarvesterClientAO; iHarvesterClientAO = NULL; - delete iHEO; - iHEO = NULL; - WRITELOG( "RHarvesterClient::Close() - Closing session" ); RSessionBase::Close(); @@ -219,8 +230,8 @@ if ( iHarvesterClientAO ) { - iHarvesterClientAO->SetObserver( aObserver ); - } + iHarvesterClientAO->SetObserver( aObserver ); + } iObserver = aObserver; } @@ -233,18 +244,16 @@ WRITELOG( "RHarvesterClient::RemoveObserver()" ); OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_REMOVEOBSERVER, "RHarvesterClient::RemoveObserver" ); - if ( iHarvesterClientAO ) - { - iHarvesterClientAO->RemoveObserver( aObserver ); - } - - if ( aObserver == iObserver ) + if ( aObserver == iObserver && iObserver ) { - if ( iObserver ) - { - WRITELOG( "CHarvesterClientAO::RemoveObserver() - deleting observer" ); - iObserver = NULL; - } + WRITELOG( "RHarvesterClient::RemoveObserver() - deleting observer" ); + + if ( iHarvesterClientAO ) + { + iHarvesterClientAO->RemoveObserver( aObserver ); + } + + iObserver = NULL; } } @@ -300,7 +309,6 @@ WRITELOG1( "RHarvesterClient::HarvestFile() - file %S", &aURI ); OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_HARVESTFILE, "RHarvesterClient::HarvestFile" ); - HBufC8* paramBuf = NULL; TRAPD( err, paramBuf = SerializeArrayL( aAlbumIds ) ); if ( err ) @@ -335,11 +343,13 @@ WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrServerBusy ); iObserver->HarvestingComplete( const_cast(aURI), KErrServerBusy ); delete harvestFileActive; + harvestFileActive = NULL; } else if( err ) { WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrServerBusy ); delete harvestFileActive; + harvestFileActive = NULL; } else { @@ -352,11 +362,13 @@ WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrDisconnected ); iObserver->HarvestingComplete( const_cast(aURI), KErrDisconnected ); delete harvestFileActive; + harvestFileActive = NULL; } else { WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrDisconnected ); delete harvestFileActive; + harvestFileActive = NULL; } WRITELOG( "RHarvesterClient::HarvestFile() - end" ); } @@ -408,11 +420,13 @@ WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrServerBusy ); iObserver->HarvestingComplete( const_cast(aURI), KErrServerBusy ); delete harvestFileActive; + harvestFileActive = NULL; } else if( err ) { WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrServerBusy ); delete harvestFileActive; + harvestFileActive = NULL; } else { @@ -424,11 +438,13 @@ WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrDisconnected ); iObserver->HarvestingComplete( const_cast(aURI), KErrDisconnected ); delete harvestFileActive; + harvestFileActive = NULL; } else { WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrDisconnected ); delete harvestFileActive; + harvestFileActive = NULL; } } @@ -464,11 +480,10 @@ // ---------------------------------------------------------------------------------------- // void RHarvesterClient::RegisterHarvestComplete(TDes& aURI, TRequestStatus& aStatus) - { + { TIpcArgs ipcArgs( &aURI ); OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_REGISTERHARVESTCOMPLETE, "RHarvesterClient::RegisterHarvestComplete" ); - if( !iHandle ) { return; @@ -488,7 +503,7 @@ return; } - Send( EUnregisterHarvestComplete ); + SendReceive( EUnregisterHarvestComplete ); } // ---------------------------------------------------------------------------------------- @@ -498,7 +513,10 @@ void RHarvesterClient::HarvestFile( TInt& aService, TIpcArgs& aArgs, TRequestStatus& aStatus ) { // send to server harvesting complete observer - iHarvesterClientAO->Active(); + if( iObserver && iHarvesterClientAO ) + { + iHarvesterClientAO->Active(); + } SendReceive( aService, aArgs, aStatus ); } @@ -508,8 +526,6 @@ // void RHarvesterClient::ForceHarvestFile( TInt& aService, TIpcArgs& aArgs ) { - // send to server harvesting complete observer - iHarvesterClientAO->Active(); SendReceive( aService, aArgs ); }