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 // ---------------------------------------------------------------------------------------- |
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; |
185 |
186 |
186 // cancels Harvest Complete request if it exist at server |
187 WRITELOG( "RHarvesterClient::Close() - cancelling pending harvesting requests" ); |
|
188 if( iRequestQueue && iRequestQueue->RequestsPending() ) |
|
189 { |
|
190 iRequestQueue->Cancel(); |
|
191 } |
|
192 |
|
193 WRITELOG( "RHarvesterClient::Close() - removing harvester client observer" ); |
|
194 if( iObserver ) |
|
195 { |
|
196 RemoveObserver( iObserver ); |
|
197 } |
187 UnregisterHarvestComplete(); |
198 UnregisterHarvestComplete(); |
188 |
199 |
189 WRITELOG( "RHarvesterClient::Close() - UnregisterHarvest done" ); |
200 WRITELOG( "RHarvesterClient::Close() - UnregisterHarvest done" ); |
190 |
201 |
|
202 WRITELOG( "RHarvesterClient::Close() - forcing remaining harvesting requests" ); |
191 if( iRequestQueue && iRequestQueue->RequestsPending() ) |
203 if( iRequestQueue && iRequestQueue->RequestsPending() ) |
192 { |
204 { |
193 iRequestQueue->Cancel(); |
205 WRITELOG( "RHarvesterClient::Close() - Pending harvesting requests detected -> ForceHarvest" ); |
194 iRequestQueue->ForceRequests(); |
206 iRequestQueue->ForceRequests(); |
195 } |
207 } |
|
208 |
|
209 WRITELOG( "RHarvesterClient::Close() - ForceHarvest done" ); |
196 |
210 |
197 delete iRequestQueue; |
211 delete iRequestQueue; |
198 iRequestQueue = NULL; |
212 iRequestQueue = NULL; |
199 |
213 |
|
214 delete iHEO; |
|
215 iHEO = NULL; |
|
216 |
|
217 WRITELOG( "RHarvesterClient::Close() - deleting harvester client AO" ); |
200 delete iHarvesterClientAO; |
218 delete iHarvesterClientAO; |
201 iHarvesterClientAO = NULL; |
219 iHarvesterClientAO = NULL; |
202 |
220 |
203 delete iHEO; |
|
204 iHEO = NULL; |
|
205 |
|
206 WRITELOG( "RHarvesterClient::Close() - Closing session" ); |
221 WRITELOG( "RHarvesterClient::Close() - Closing session" ); |
207 |
222 |
208 RSessionBase::Close(); |
223 RSessionBase::Close(); |
209 } |
224 } |
210 |
225 |
217 WRITELOG( "RHarvesterClient::SetObserver()" ); |
232 WRITELOG( "RHarvesterClient::SetObserver()" ); |
218 OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_SETOBSERVER, "RHarvesterClient::SetObserver" ); |
233 OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_SETOBSERVER, "RHarvesterClient::SetObserver" ); |
219 |
234 |
220 if ( iHarvesterClientAO ) |
235 if ( iHarvesterClientAO ) |
221 { |
236 { |
222 iHarvesterClientAO->SetObserver( aObserver ); |
237 iHarvesterClientAO->SetObserver( aObserver ); |
223 } |
238 } |
224 iObserver = aObserver; |
239 iObserver = aObserver; |
225 } |
240 } |
226 |
241 |
227 // ---------------------------------------------------------------------------------------- |
242 // ---------------------------------------------------------------------------------------- |
228 // RemoveObserver |
243 // RemoveObserver |
231 EXPORT_C void RHarvesterClient::RemoveObserver( MHarvestObserver* aObserver ) |
246 EXPORT_C void RHarvesterClient::RemoveObserver( MHarvestObserver* aObserver ) |
232 { |
247 { |
233 WRITELOG( "RHarvesterClient::RemoveObserver()" ); |
248 WRITELOG( "RHarvesterClient::RemoveObserver()" ); |
234 OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_REMOVEOBSERVER, "RHarvesterClient::RemoveObserver" ); |
249 OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_REMOVEOBSERVER, "RHarvesterClient::RemoveObserver" ); |
235 |
250 |
236 if ( iHarvesterClientAO ) |
251 if ( aObserver == iObserver && iObserver ) |
237 { |
|
238 iHarvesterClientAO->RemoveObserver( aObserver ); |
|
239 } |
|
240 |
|
241 if ( aObserver == iObserver ) |
|
242 { |
252 { |
243 if ( iObserver ) |
253 WRITELOG( "RHarvesterClient::RemoveObserver() - deleting observer" ); |
244 { |
254 |
245 WRITELOG( "CHarvesterClientAO::RemoveObserver() - deleting observer" ); |
255 if ( iHarvesterClientAO ) |
246 iObserver = NULL; |
256 { |
247 } |
257 WRITELOG( "RHarvesterClient::RemoveObserver() - calling iHarvesterClientAO->RemoveObserver" ); |
|
258 iHarvesterClientAO->RemoveObserver( aObserver ); |
|
259 } |
|
260 |
|
261 iObserver = NULL; |
248 } |
262 } |
249 } |
263 } |
250 |
264 |
251 // ---------------------------------------------------------------------------------------- |
265 // ---------------------------------------------------------------------------------------- |
252 // AddHarvesterEventObserver |
266 // AddHarvesterEventObserver |
298 EXPORT_C void RHarvesterClient::HarvestFile( const TDesC& aURI, RArray<TItemId>& aAlbumIds, TBool aAddLocation ) |
312 EXPORT_C void RHarvesterClient::HarvestFile( const TDesC& aURI, RArray<TItemId>& aAlbumIds, TBool aAddLocation ) |
299 { |
313 { |
300 WRITELOG1( "RHarvesterClient::HarvestFile() - file %S", &aURI ); |
314 WRITELOG1( "RHarvesterClient::HarvestFile() - file %S", &aURI ); |
301 OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_HARVESTFILE, "RHarvesterClient::HarvestFile" ); |
315 OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_HARVESTFILE, "RHarvesterClient::HarvestFile" ); |
302 |
316 |
303 |
|
304 HBufC8* paramBuf = NULL; |
317 HBufC8* paramBuf = NULL; |
305 TRAPD( err, paramBuf = SerializeArrayL( aAlbumIds ) ); |
318 TRAPD( err, paramBuf = SerializeArrayL( aAlbumIds ) ); |
306 if ( err ) |
319 if ( err ) |
307 { |
320 { |
308 WRITELOG1( "RHarvesterClient::HarvestFile() - cannot create serialized array, error: %d", err ); |
321 WRITELOG1( "RHarvesterClient::HarvestFile() - cannot create serialized array, error: %d", err ); |
333 if( err && iObserver) |
346 if( err && iObserver) |
334 { |
347 { |
335 WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrServerBusy ); |
348 WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrServerBusy ); |
336 iObserver->HarvestingComplete( const_cast<TDesC&>(aURI), KErrServerBusy ); |
349 iObserver->HarvestingComplete( const_cast<TDesC&>(aURI), KErrServerBusy ); |
337 delete harvestFileActive; |
350 delete harvestFileActive; |
|
351 harvestFileActive = NULL; |
338 } |
352 } |
339 else if( err ) |
353 else if( err ) |
340 { |
354 { |
341 WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrServerBusy ); |
355 WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrServerBusy ); |
342 delete harvestFileActive; |
356 delete harvestFileActive; |
|
357 harvestFileActive = NULL; |
343 } |
358 } |
344 else |
359 else |
345 { |
360 { |
346 WRITELOG( "RHarvesterClient::HarvestFile() - harvesting request added to queue" ); |
361 WRITELOG( "RHarvesterClient::HarvestFile() - harvesting request added to queue" ); |
347 iRequestQueue->Process(); |
362 iRequestQueue->Process(); |
350 else if( iObserver ) |
365 else if( iObserver ) |
351 { |
366 { |
352 WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrDisconnected ); |
367 WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrDisconnected ); |
353 iObserver->HarvestingComplete( const_cast<TDesC&>(aURI), KErrDisconnected ); |
368 iObserver->HarvestingComplete( const_cast<TDesC&>(aURI), KErrDisconnected ); |
354 delete harvestFileActive; |
369 delete harvestFileActive; |
|
370 harvestFileActive = NULL; |
355 } |
371 } |
356 else |
372 else |
357 { |
373 { |
358 WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrDisconnected ); |
374 WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrDisconnected ); |
359 delete harvestFileActive; |
375 delete harvestFileActive; |
|
376 harvestFileActive = NULL; |
360 } |
377 } |
361 WRITELOG( "RHarvesterClient::HarvestFile() - end" ); |
378 WRITELOG( "RHarvesterClient::HarvestFile() - end" ); |
362 } |
379 } |
363 |
380 |
364 // ---------------------------------------------------------------------------------------- |
381 // ---------------------------------------------------------------------------------------- |
406 if( err && iObserver) |
423 if( err && iObserver) |
407 { |
424 { |
408 WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrServerBusy ); |
425 WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrServerBusy ); |
409 iObserver->HarvestingComplete( const_cast<TDesC&>(aURI), KErrServerBusy ); |
426 iObserver->HarvestingComplete( const_cast<TDesC&>(aURI), KErrServerBusy ); |
410 delete harvestFileActive; |
427 delete harvestFileActive; |
|
428 harvestFileActive = NULL; |
411 } |
429 } |
412 else if( err ) |
430 else if( err ) |
413 { |
431 { |
414 WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrServerBusy ); |
432 WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrServerBusy ); |
415 delete harvestFileActive; |
433 delete harvestFileActive; |
|
434 harvestFileActive = NULL; |
416 } |
435 } |
417 else |
436 else |
418 { |
437 { |
419 iRequestQueue->Process(); |
438 iRequestQueue->Process(); |
420 } |
439 } |
422 else if( iObserver ) |
441 else if( iObserver ) |
423 { |
442 { |
424 WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrDisconnected ); |
443 WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrDisconnected ); |
425 iObserver->HarvestingComplete( const_cast<TDesC&>(aURI), KErrDisconnected ); |
444 iObserver->HarvestingComplete( const_cast<TDesC&>(aURI), KErrDisconnected ); |
426 delete harvestFileActive; |
445 delete harvestFileActive; |
|
446 harvestFileActive = NULL; |
427 } |
447 } |
428 else |
448 else |
429 { |
449 { |
430 WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrDisconnected ); |
450 WRITELOG1( "RHarvesterClient::HarvestFile() - cannot not send harvest request to server, error: %d", KErrDisconnected ); |
431 delete harvestFileActive; |
451 delete harvestFileActive; |
|
452 harvestFileActive = NULL; |
432 } |
453 } |
433 } |
454 } |
434 |
455 |
435 // ---------------------------------------------------------------------------------------- |
456 // ---------------------------------------------------------------------------------------- |
436 // AddSessionObserver |
457 // AddSessionObserver |
462 // ---------------------------------------------------------------------------------------- |
483 // ---------------------------------------------------------------------------------------- |
463 // RegisterHarvestComplete |
484 // RegisterHarvestComplete |
464 // ---------------------------------------------------------------------------------------- |
485 // ---------------------------------------------------------------------------------------- |
465 // |
486 // |
466 void RHarvesterClient::RegisterHarvestComplete(TDes& aURI, TRequestStatus& aStatus) |
487 void RHarvesterClient::RegisterHarvestComplete(TDes& aURI, TRequestStatus& aStatus) |
467 { |
488 { |
468 TIpcArgs ipcArgs( &aURI ); |
489 TIpcArgs ipcArgs( &aURI ); |
469 OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_REGISTERHARVESTCOMPLETE, "RHarvesterClient::RegisterHarvestComplete" ); |
490 OstTrace0( TRACE_NORMAL, RHARVESTERCLIENT_REGISTERHARVESTCOMPLETE, "RHarvesterClient::RegisterHarvestComplete" ); |
470 |
|
471 |
491 |
472 if( !iHandle ) |
492 if( !iHandle ) |
473 { |
493 { |
474 return; |
494 return; |
475 } |
495 } |
486 if( !iHandle ) |
506 if( !iHandle ) |
487 { |
507 { |
488 return; |
508 return; |
489 } |
509 } |
490 |
510 |
491 Send( EUnregisterHarvestComplete ); |
511 SendReceive( EUnregisterHarvestComplete ); |
492 } |
512 } |
493 |
513 |
494 // ---------------------------------------------------------------------------------------- |
514 // ---------------------------------------------------------------------------------------- |
495 // HarvestFile |
515 // HarvestFile |
496 // ---------------------------------------------------------------------------------------- |
516 // ---------------------------------------------------------------------------------------- |
497 // |
517 // |
498 void RHarvesterClient::HarvestFile( TInt& aService, TIpcArgs& aArgs, TRequestStatus& aStatus ) |
518 void RHarvesterClient::HarvestFile( TInt& aService, TIpcArgs& aArgs, TRequestStatus& aStatus ) |
499 { |
519 { |
500 // send to server harvesting complete observer |
520 // send to server harvesting complete observer |
501 iHarvesterClientAO->Active(); |
521 if( iObserver && iHarvesterClientAO ) |
|
522 { |
|
523 iHarvesterClientAO->Active(); |
|
524 } |
502 SendReceive( aService, aArgs, aStatus ); |
525 SendReceive( aService, aArgs, aStatus ); |
503 } |
526 } |
504 |
527 |
505 // ---------------------------------------------------------------------------------------- |
528 // ---------------------------------------------------------------------------------------- |
506 // ForceHarvestFile |
529 // ForceHarvestFile |
507 // ---------------------------------------------------------------------------------------- |
530 // ---------------------------------------------------------------------------------------- |
508 // |
531 // |
509 void RHarvesterClient::ForceHarvestFile( TInt& aService, TIpcArgs& aArgs ) |
532 void RHarvesterClient::ForceHarvestFile( TInt& aService, TIpcArgs& aArgs ) |
510 { |
533 { |
511 // send to server harvesting complete observer |
|
512 iHarvesterClientAO->Active(); |
|
513 SendReceive( aService, aArgs ); |
534 SendReceive( aService, aArgs ); |
514 } |
535 } |
515 |
536 |
516 // ---------------------------------------------------------------------------------------- |
537 // ---------------------------------------------------------------------------------------- |
517 // Version |
538 // Version |