harvester/client/src/harvesterclient.cpp
branchRCL_3
changeset 19 b73252188534
parent 18 63c982fb92f2
child 20 f23c07ec56e2
equal deleted inserted replaced
18:63c982fb92f2 19:b73252188534
    52 EXPORT_C RHarvesterClient::RHarvesterClient() : RSessionBase() 
    52 EXPORT_C RHarvesterClient::RHarvesterClient() : RSessionBase() 
    53     {
    53     {
    54     WRITELOG( "RHarvesterClient::RHarvesterClient() - Constructor" );
    54     WRITELOG( "RHarvesterClient::RHarvesterClient() - Constructor" );
    55     OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_RHARVESTERCLIENT, "RHarvesterClient::RHarvesterClient" );
    55     OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_RHARVESTERCLIENT, "RHarvesterClient::RHarvesterClient" );
    56     
    56     
    57     iHarvesterClientAO = NULL;
       
    58     iObserver = NULL;
    57     iObserver = NULL;
    59     iHEO = NULL;
    58     iHEO = NULL;
    60     iRequestQueue = NULL;
    59     iRequestQueue = NULL;
       
    60     iHarvesterClientAO = NULL;
       
    61     iSessionWatcher = NULL;
    61     }
    62     }
    62 
    63 
    63 // ----------------------------------------------------------------------------------------
    64 // ----------------------------------------------------------------------------------------
    64 // Connect
    65 // Connect
    65 // ----------------------------------------------------------------------------------------
    66 // ----------------------------------------------------------------------------------------
    66 //
    67 //
    67 EXPORT_C TInt RHarvesterClient::Connect()
    68 EXPORT_C TInt RHarvesterClient::Connect()
    68     {
    69     {
    69     WRITELOG( "RHarvesterClient::Connect()" );
    70     WRITELOG( "RHarvesterClient::Connect()" );
    70     OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_CONNECT, "RHarvesterClient::Connect" );
    71     OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_CONNECT, "RHarvesterClient::Connect" );
    71     
       
    72     
    72     
    73     RProperty property;
    73     RProperty property;
    74     const TInt error( property.Attach( KHarvesterPSShutdown, KShutdown, EOwnerThread ) );
    74     const TInt error( property.Attach( KHarvesterPSShutdown, KShutdown, EOwnerThread ) );
    75     TInt value = 0;
    75     TInt value = 0;
    76     property.Get( value );
    76     property.Get( value );
   112         WRITELOG( "RHarvesterClient::Connect() - creating session" );
   112         WRITELOG( "RHarvesterClient::Connect() - creating session" );
   113         err = CreateSession( KHarvesterServerName, Version(), KDefaultMessageSlots );
   113         err = CreateSession( KHarvesterServerName, Version(), KDefaultMessageSlots );
   114         }
   114         }
   115     else
   115     else
   116         {
   116         {
       
   117         WRITELOG1( "RHarvesterClient::Connect() - Server is not running or could not be started, error &d", err );
       
   118         delete iRequestQueue;
       
   119         iRequestQueue = NULL;
   117         delete iHarvesterClientAO;
   120         delete iHarvesterClientAO;
   118         iHarvesterClientAO = NULL;
   121         iHarvesterClientAO = NULL;
       
   122         return err;
       
   123         }
       
   124 
       
   125     if( err != KErrNone )
       
   126         {
       
   127         WRITELOG1( "RHarvesterClient::Connect() - Session creation failed, error &d", err );
   119         delete iRequestQueue;
   128         delete iRequestQueue;
   120         iRequestQueue = NULL;
   129         iRequestQueue = NULL;
   121         }
   130         delete iHarvesterClientAO;
   122 
   131         iHarvesterClientAO = NULL;    
   123 #ifdef _DEBUG
   132         }
   124     if ( err != KErrNone )
   133     
   125         {
   134     iHEO = NULL;
   126         WRITELOG1( "RHarvesterClient::Connect() - Server is not running or could not be started, error &d", err );
   135     
   127         }
   136     iSessionWatcher = NULL;
   128     else
   137     
   129         {
       
   130         WRITELOG( "RHarvesterClient::Connect() - no errors" );
       
   131         }
       
   132     WRITELOG( "RHarvesterClient::Connect() - end" );
   138     WRITELOG( "RHarvesterClient::Connect() - end" );
   133 #endif
       
   134 
       
   135     iHEO = NULL;
       
   136     
       
   137     iSessionWatcher = NULL;
       
   138     
   139     
   139     return err;
   140     return err;
   140     }
   141     }
   141 
   142 
   142 // ----------------------------------------------------------------------------------------
   143 // ----------------------------------------------------------------------------------------
   180     WRITELOG( "RHarvesterClient::Close()" );
   181     WRITELOG( "RHarvesterClient::Close()" );
   181     OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_CLOSE, "RHarvesterClient::Close" );
   182     OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_CLOSE, "RHarvesterClient::Close" );
   182     
   183     
   183     delete iSessionWatcher;
   184     delete iSessionWatcher;
   184     iSessionWatcher = NULL;
   185     iSessionWatcher = NULL;
       
   186 
       
   187     if( iRequestQueue && iRequestQueue->RequestsPending() )
       
   188         {
       
   189         iRequestQueue->Cancel();
       
   190         }
   185     
   191     
   186     // cancels Harvest Complete request if it exist at server
   192     // cancels Harvest Complete request if it exist at server
   187     UnregisterHarvestComplete();
   193     if( iObserver )
       
   194         {
       
   195         RemoveObserver( iObserver );
       
   196         }
   188     
   197     
   189     WRITELOG( "RHarvesterClient::Close() - UnregisterHarvest done" );
   198     WRITELOG( "RHarvesterClient::Close() - UnregisterHarvest done" );
   190     
   199     
   191     if( iRequestQueue && iRequestQueue->RequestsPending() )
   200     if( iRequestQueue && iRequestQueue->RequestsPending() )
   192         {
   201         {
   193         iRequestQueue->Cancel();
   202         WRITELOG( "RHarvesterClient::Close() - Pending harvesting requests detected -> ForceHarvest" );
   194         iRequestQueue->ForceRequests();
   203         iRequestQueue->ForceRequests();
   195         }
   204         }
       
   205     
       
   206     WRITELOG( "RHarvesterClient::Close() - ForceHarvest done" );
   196     
   207     
   197     delete iRequestQueue;
   208     delete iRequestQueue;
   198     iRequestQueue = NULL;
   209     iRequestQueue = NULL;
   199     
   210     
       
   211     delete iHEO;
       
   212     iHEO = NULL;
       
   213     
   200     delete iHarvesterClientAO;
   214     delete iHarvesterClientAO;
   201     iHarvesterClientAO = NULL;
   215     iHarvesterClientAO = NULL;
   202     
   216     
   203     delete iHEO;
       
   204     iHEO = NULL;
       
   205     
       
   206     WRITELOG( "RHarvesterClient::Close() - Closing session" );
   217     WRITELOG( "RHarvesterClient::Close() - Closing session" );
   207     
   218     
   208     RSessionBase::Close();
   219     RSessionBase::Close();
   209     }
   220     }
   210 
   221 
   217     WRITELOG( "RHarvesterClient::SetObserver()" );
   228     WRITELOG( "RHarvesterClient::SetObserver()" );
   218     OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_SETOBSERVER, "RHarvesterClient::SetObserver" );
   229     OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_SETOBSERVER, "RHarvesterClient::SetObserver" );
   219 
   230 
   220     if ( iHarvesterClientAO )
   231     if ( iHarvesterClientAO )
   221         {
   232         {
   222         iHarvesterClientAO->SetObserver( aObserver );
   233        iHarvesterClientAO->SetObserver( aObserver );
   223         }
   234        }
   224 	iObserver = aObserver;
   235 	iObserver = aObserver;
   225     }
   236     }
   226 
   237 
   227 // ----------------------------------------------------------------------------------------
   238 // ----------------------------------------------------------------------------------------
   228 // RemoveObserver
   239 // RemoveObserver
   231 EXPORT_C void RHarvesterClient::RemoveObserver( MHarvestObserver* aObserver )
   242 EXPORT_C void RHarvesterClient::RemoveObserver( MHarvestObserver* aObserver )
   232     {
   243     {
   233     WRITELOG( "RHarvesterClient::RemoveObserver()" );
   244     WRITELOG( "RHarvesterClient::RemoveObserver()" );
   234     OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_REMOVEOBSERVER, "RHarvesterClient::RemoveObserver" );
   245     OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_REMOVEOBSERVER, "RHarvesterClient::RemoveObserver" );
   235     
   246     
   236     if ( iHarvesterClientAO )
   247 	if ( aObserver == iObserver && iObserver )
   237         {
       
   238         iHarvesterClientAO->RemoveObserver( aObserver );
       
   239         }
       
   240     
       
   241 	if ( aObserver == iObserver )
       
   242 		{
   248 		{
   243 		if ( iObserver )
   249 		WRITELOG( "RHarvesterClient::RemoveObserver() - deleting observer" );
   244 			{
   250 		
   245 			WRITELOG( "CHarvesterClientAO::RemoveObserver() - deleting observer" );
   251 	    if ( iHarvesterClientAO )
   246 			iObserver = NULL;
   252 	        {
   247 			}
   253 	        iHarvesterClientAO->RemoveObserver( aObserver );
       
   254 	        }
       
   255 		
       
   256 		iObserver = NULL;
   248 		}
   257 		}
   249     }
   258     }
   250 
   259 
   251 // ----------------------------------------------------------------------------------------
   260 // ----------------------------------------------------------------------------------------
   252 // AddHarvesterEventObserver
   261 // AddHarvesterEventObserver
   298 EXPORT_C void RHarvesterClient::HarvestFile( const TDesC& aURI, RArray<TItemId>& aAlbumIds, TBool aAddLocation )
   307 EXPORT_C void RHarvesterClient::HarvestFile( const TDesC& aURI, RArray<TItemId>& aAlbumIds, TBool aAddLocation )
   299     {
   308     {
   300     WRITELOG1( "RHarvesterClient::HarvestFile() - file %S", &aURI );
   309     WRITELOG1( "RHarvesterClient::HarvestFile() - file %S", &aURI );
   301     OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_HARVESTFILE, "RHarvesterClient::HarvestFile" );
   310     OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_HARVESTFILE, "RHarvesterClient::HarvestFile" );
   302     
   311     
   303     
       
   304     HBufC8* paramBuf = NULL;
   312     HBufC8* paramBuf = NULL;
   305     TRAPD( err, paramBuf = SerializeArrayL( aAlbumIds ) );
   313     TRAPD( err, paramBuf = SerializeArrayL( aAlbumIds ) );
   306     if ( err )
   314     if ( err )
   307     	{
   315     	{
   308         WRITELOG1( "RHarvesterClient::HarvestFile() - cannot create serialized array, error: %d", err );
   316         WRITELOG1( "RHarvesterClient::HarvestFile() - cannot create serialized array, error: %d", err );
   333         if( err && iObserver)
   341         if( err && iObserver)
   334             {
   342             {
   335             WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrServerBusy );
   343             WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrServerBusy );
   336             iObserver->HarvestingComplete( const_cast<TDesC&>(aURI), KErrServerBusy );  
   344             iObserver->HarvestingComplete( const_cast<TDesC&>(aURI), KErrServerBusy );  
   337             delete harvestFileActive;
   345             delete harvestFileActive;
       
   346             harvestFileActive = NULL;
   338             }
   347             }
   339         else if( err )
   348         else if( err )
   340             {
   349             {
   341             WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrServerBusy );
   350             WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrServerBusy );
   342             delete harvestFileActive;
   351             delete harvestFileActive;
       
   352             harvestFileActive = NULL;
   343             }
   353             }
   344         else
   354         else
   345             {
   355             {
   346             WRITELOG( "RHarvesterClient::HarvestFile() - harvesting request added to queue" );
   356             WRITELOG( "RHarvesterClient::HarvestFile() - harvesting request added to queue" );
   347             iRequestQueue->Process();
   357             iRequestQueue->Process();
   350     else if( iObserver )
   360     else if( iObserver )
   351         {
   361         {
   352         WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrDisconnected );
   362         WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrDisconnected );
   353         iObserver->HarvestingComplete( const_cast<TDesC&>(aURI), KErrDisconnected );  
   363         iObserver->HarvestingComplete( const_cast<TDesC&>(aURI), KErrDisconnected );  
   354         delete harvestFileActive;
   364         delete harvestFileActive;
       
   365         harvestFileActive = NULL;
   355         }
   366         }
   356     else
   367     else
   357         {
   368         {
   358         WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrDisconnected );
   369         WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrDisconnected );
   359         delete harvestFileActive;
   370         delete harvestFileActive;
       
   371         harvestFileActive = NULL;
   360         }
   372         }
   361     WRITELOG( "RHarvesterClient::HarvestFile() - end" );
   373     WRITELOG( "RHarvesterClient::HarvestFile() - end" );
   362     }
   374     }
   363 
   375 
   364 // ----------------------------------------------------------------------------------------
   376 // ----------------------------------------------------------------------------------------
   406         if( err && iObserver)
   418         if( err && iObserver)
   407             {
   419             {
   408             WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrServerBusy );
   420             WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrServerBusy );
   409             iObserver->HarvestingComplete( const_cast<TDesC&>(aURI), KErrServerBusy );  
   421             iObserver->HarvestingComplete( const_cast<TDesC&>(aURI), KErrServerBusy );  
   410             delete harvestFileActive;
   422             delete harvestFileActive;
       
   423             harvestFileActive = NULL;
   411             }
   424             }
   412         else if( err )
   425         else if( err )
   413             {
   426             {
   414             WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrServerBusy );
   427             WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrServerBusy );
   415             delete harvestFileActive;
   428             delete harvestFileActive;
       
   429             harvestFileActive = NULL;
   416             }
   430             }
   417         else
   431         else
   418             {
   432             {
   419             iRequestQueue->Process();
   433             iRequestQueue->Process();
   420             }
   434             }
   422     else if( iObserver )
   436     else if( iObserver )
   423         {
   437         {
   424         WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrDisconnected );
   438         WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrDisconnected );
   425         iObserver->HarvestingComplete( const_cast<TDesC&>(aURI), KErrDisconnected );  
   439         iObserver->HarvestingComplete( const_cast<TDesC&>(aURI), KErrDisconnected );  
   426         delete harvestFileActive;
   440         delete harvestFileActive;
       
   441         harvestFileActive = NULL;
   427         }
   442         }
   428     else
   443     else
   429         {
   444         {
   430         WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrDisconnected );
   445         WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrDisconnected );
   431         delete harvestFileActive;
   446         delete harvestFileActive;
       
   447         harvestFileActive = NULL;
   432         }
   448         }
   433     }
   449     }
   434 
   450 
   435 // ----------------------------------------------------------------------------------------
   451 // ----------------------------------------------------------------------------------------
   436 // AddSessionObserver
   452 // AddSessionObserver
   462 // ----------------------------------------------------------------------------------------
   478 // ----------------------------------------------------------------------------------------
   463 // RegisterHarvestComplete
   479 // RegisterHarvestComplete
   464 // ----------------------------------------------------------------------------------------
   480 // ----------------------------------------------------------------------------------------
   465 //
   481 //
   466 void RHarvesterClient::RegisterHarvestComplete(TDes& aURI, TRequestStatus& aStatus)
   482 void RHarvesterClient::RegisterHarvestComplete(TDes& aURI, TRequestStatus& aStatus)
   467 	{	
   483 	{
   468 	TIpcArgs ipcArgs( &aURI );
   484 	TIpcArgs ipcArgs( &aURI );
   469 	OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_REGISTERHARVESTCOMPLETE, "RHarvesterClient::RegisterHarvestComplete" );
   485 	OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_REGISTERHARVESTCOMPLETE, "RHarvesterClient::RegisterHarvestComplete" );
   470 	
       
   471 	
   486 	
   472 	if( !iHandle )
   487 	if( !iHandle )
   473 		{
   488 		{
   474 		return;
   489 		return;
   475 		}
   490 		}
   486 	if( !iHandle )
   501 	if( !iHandle )
   487 		{
   502 		{
   488 		return;
   503 		return;
   489 		}	
   504 		}	
   490 	
   505 	
   491 	Send( EUnregisterHarvestComplete );
   506 	SendReceive( EUnregisterHarvestComplete );
   492 	}
   507 	}
   493 
   508 
   494 // ----------------------------------------------------------------------------------------
   509 // ----------------------------------------------------------------------------------------
   495 // HarvestFile
   510 // HarvestFile
   496 // ----------------------------------------------------------------------------------------
   511 // ----------------------------------------------------------------------------------------
   497 //
   512 //
   498 void RHarvesterClient::HarvestFile( TInt& aService, TIpcArgs& aArgs, TRequestStatus& aStatus )
   513 void RHarvesterClient::HarvestFile( TInt& aService, TIpcArgs& aArgs, TRequestStatus& aStatus )
   499     {
   514     {
   500     // send to server harvesting complete observer
   515     // send to server harvesting complete observer
   501     iHarvesterClientAO->Active();
   516     if( iObserver && iHarvesterClientAO )
       
   517         {
       
   518         iHarvesterClientAO->Active();
       
   519         }
   502     SendReceive( aService, aArgs, aStatus );
   520     SendReceive( aService, aArgs, aStatus );
   503     }
   521     }
   504 
   522 
   505 // ----------------------------------------------------------------------------------------
   523 // ----------------------------------------------------------------------------------------
   506 // ForceHarvestFile
   524 // ForceHarvestFile
   507 // ----------------------------------------------------------------------------------------
   525 // ----------------------------------------------------------------------------------------
   508 //
   526 //
   509 void RHarvesterClient::ForceHarvestFile( TInt& aService, TIpcArgs& aArgs )
   527 void RHarvesterClient::ForceHarvestFile( TInt& aService, TIpcArgs& aArgs )
   510     {
   528     {
   511     // send to server harvesting complete observer
       
   512     iHarvesterClientAO->Active();
       
   513     SendReceive( aService, aArgs );
   529     SendReceive( aService, aArgs );
   514     }
   530     }
   515 
   531 
   516 // ----------------------------------------------------------------------------------------
   532 // ----------------------------------------------------------------------------------------
   517 // Version
   533 // Version