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 |