--- a/harvester/client/src/harvesterclient.cpp Tue Jul 06 14:44:37 2010 +0300
+++ b/harvester/client/src/harvesterclient.cpp Fri Sep 17 16:54:49 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;
}
@@ -183,26 +184,40 @@
delete iSessionWatcher;
iSessionWatcher = NULL;
- // cancels Harvest Complete request if it exist at server
+ WRITELOG( "RHarvesterClient::Close() - cancelling pending harvesting requests" );
+ if( iRequestQueue && iRequestQueue->RequestsPending() )
+ {
+ iRequestQueue->Cancel();
+ }
+
+ WRITELOG( "RHarvesterClient::Close() - removing harvester client observer" );
+ if( iObserver )
+ {
+ RemoveObserver( iObserver );
+ }
UnregisterHarvestComplete();
WRITELOG( "RHarvesterClient::Close() - UnregisterHarvest done" );
+ WRITELOG( "RHarvesterClient::Close() - forcing remaining harvesting requests" );
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;
+
+ WRITELOG( "RHarvesterClient::Close() - deleting harvester client AO" );
delete iHarvesterClientAO;
iHarvesterClientAO = NULL;
- delete iHEO;
- iHEO = NULL;
-
WRITELOG( "RHarvesterClient::Close() - Closing session" );
RSessionBase::Close();
@@ -219,8 +234,8 @@
if ( iHarvesterClientAO )
{
- iHarvesterClientAO->SetObserver( aObserver );
- }
+ iHarvesterClientAO->SetObserver( aObserver );
+ }
iObserver = aObserver;
}
@@ -233,18 +248,17 @@
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 )
+ {
+ WRITELOG( "RHarvesterClient::RemoveObserver() - calling iHarvesterClientAO->RemoveObserver" );
+ iHarvesterClientAO->RemoveObserver( aObserver );
+ }
+
+ iObserver = NULL;
}
}
@@ -300,7 +314,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 +348,13 @@
WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrServerBusy );
iObserver->HarvestingComplete( const_cast<TDesC&>(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 +367,13 @@
WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrDisconnected );
iObserver->HarvestingComplete( const_cast<TDesC&>(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 +425,13 @@
WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrServerBusy );
iObserver->HarvestingComplete( const_cast<TDesC&>(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 +443,13 @@
WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrDisconnected );
iObserver->HarvestingComplete( const_cast<TDesC&>(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 +485,10 @@
// ----------------------------------------------------------------------------------------
//
void RHarvesterClient::RegisterHarvestComplete(TDes& aURI, TRequestStatus& aStatus)
- {
+ {
TIpcArgs ipcArgs( &aURI );
OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_REGISTERHARVESTCOMPLETE, "RHarvesterClient::RegisterHarvestComplete" );
-
if( !iHandle )
{
return;
@@ -488,7 +508,7 @@
return;
}
- Send( EUnregisterHarvestComplete );
+ SendReceive( EUnregisterHarvestComplete );
}
// ----------------------------------------------------------------------------------------
@@ -498,7 +518,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 +531,6 @@
//
void RHarvesterClient::ForceHarvestFile( TInt& aService, TIpcArgs& aArgs )
{
- // send to server harvesting complete observer
- iHarvesterClientAO->Active();
SendReceive( aService, aArgs );
}